【发布时间】:2018-01-29 17:39:56
【问题描述】:
这是交易 - 我们只有一个排列,因此无需执行任何浏览器检测。我们正在针对移动设备进行优化,延迟和网络带宽是一个问题。除了使用 HTTP 请求之外,我们还有另一种获取主要片段的方法,并且希望利用它,但 *.nocache.js 只知道创建一个通过 http 请求它的脚本标记。
我试图创建一个自定义版本的 *.nocache.js(目前是 hacking),它会做足够的设置以允许我们以不同的方式加载片段代码(因为直接加载片段似乎不起作用,即使我取消它 - 所有代码都在传递给函数调用的带引号的字符串列表中)。我设法让该代码运行,但它失败了。
有什么想法吗?
【问题讨论】:
-
你试过
<add-linker name="sso"/>吗? -
好建议。我会。我完全忘记了这一点(可能是因为我们真的从来没有搞砸过)。
-
OK ...我尝试了这个并且更进一步...但是当我尝试直接注入脚本时(createElement,而不是 )整个文档变成空的 (Chrome) 或有 (Firefox)。查找此内容发现这可能与“computeScriptBase”有关,并且脚本预计其模块名称会出现在 URL 库中……但事实并非如此(这是从上一层的页面加载的)。现在与它作斗争......
-
好吧,我在这方面做了 hack,但它是一个 hack。 computeScriptBase() 是罪魁祸首——它几乎是脚本调用的第一件事(除了设置提供程序、值等),而 computeScriptBase() 做的第一件事就是 document.write()。因此,在添加脚本并在之后返回它之前,我用一个虚拟实现替换了 document.write。为了获得正确的基数,我还必须为脚本临时插入一个
元素,然后将其更正回原始值。哎呀!