2016-11-19 39 views
0

我有一个特殊问题。我有一个小工具装载机,即负责加载特定的javascript资产:强制通过ajax注入javascript资源以重新执行多次注入

$.ajax("cdn.example.com/widget.js", { 
    dataType: 'script', 
    cache: false 
}).then(function() { 
    console.log(window.widgetRenderTime); 
}) 

当我在web应用程序中的特定点,我用上面的代码加载控件。这里是小工具的样子:

const timestamp = "hi" + new Date().getTime(); 

window.widgetRenderTime = timestamp; 

上面的代码是widget.js的说明。当我到达下载小部件并注入页面的位置时,一切都很好。

现在,如果我导航离开小部件,然后回到小部件被调用的位置再次,代码不会重新执行,因为源已经在页面中进行了评估。因此,“widgetRenderTime”实际上是第一次调用小部件的渲染时间。

有没有办法删除并重新执行JavaScript资源注入到网页?我的缓存遭到破坏,因此Chrome资源标签中显示新资源,但实际上并未执行。

希望这是有道理的。

+0

你可以显示执行ajax调用的位置吗? – deiga

+0

这并不重要。你可以想象当你按下一个特定的按钮时它会被调用。它将加载外部js资产。如果我再次按下该按钮,则外部资源已被加载,并且不会重新评估该文件中的代码 –

回答

0

好吧,我做了一个的jsfiddle关于您的问题,这些问题似乎是,该timestamp已经被定义,因此错误的了:https://jsfiddle.net/deiga/d8h1d6j2/8/

正确的方式做这将是命名空间的变量,所以你不会污染全局命名空间