Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多次加载js–Chrome问题_Javascript_Html_Google Chrome - Fatal编程技术网

Javascript 多次加载js–Chrome问题

Javascript 多次加载js–Chrome问题,javascript,html,google-chrome,Javascript,Html,Google Chrome,我正在尝试使用外部js文件加载div中的内容 js文件需要加载的量与加载的divs一样多。 例如: <div class="classname1" userId="101010" unitId="111"></div> <script src="//example.com/js/thefile.js"></script> <div class="classname2" userId="101010" unitId="222"><

我正在尝试使用外部js文件加载div中的内容

js文件需要加载的量与加载的divs一样多。 例如:

<div class="classname1" userId="101010" unitId="111"></div>
<script src="//example.com/js/thefile.js"></script>

<div class="classname2" userId="101010" unitId="222"></div>
<script src="//example.com/js/thefile.js"></script>

<div class="classname2" userId="101010" unitId="333"></div>
<script src="//example.com/js/thefile.js"></script>
此代码将提供给用户,以便将其嵌入其网站中。比如说,它将嵌入example2.com和example3.com中

当js加载到此站点时,代码读取属性,并根据属性显示div中的相关内容

该脚本在Firefox中运行良好,例如:如果有3段嵌入代码,那么浏览器显示3个内容,但在Chrome上运行不好,它只显示一个内容

正如我注意到的,Chrome检测js加载的次数,例如3次,但是第一段代码有效,而其他代码无效

注意:当我使用一个技巧时,它在Chrome中起作用,但我不想使用这个简单的解决方案:我通过在.js文件后添加?v=1、?v=2和?v=3来更改每个嵌入代码的src url


任何解决此问题的想法都将受到欢迎。

这里真正的问题不是文件没有加载三次,而是代码没有执行三次


浏览器需要缓存文件。而且,当同一个文件被多次包含时,可能会出现不一致的行为。使用nonce(如v1等)将禁用缓存。这里最好的做法是将JS文件的功能包装在一个函数中,然后只加载一次该文件。您可以简单地调用函数三次,或者根据需要多次调用。

这里真正的问题不是文件没有加载三次,而是代码没有执行三次


浏览器需要缓存文件。而且,当同一个文件被多次包含时,可能会出现不一致的行为。使用nonce(如v1等)将禁用缓存。这里最好的做法是将JS文件的功能包装在一个函数中,然后只加载一次该文件。您可以简单地调用函数三次,或者根据需要多次调用。

您可以创建一个脚本,在加载窗口结束时加载js脚本,例如:window.onload=function{var script=document.createElement'script';script.src='//example.com/js/thefile.js';document.body.appendChildscript;}实际上,这可能不是真的。js可能可以重新构建,以便加载一次,并且需要在该元素上触发的脚本会被多次触发。。。。但是您没有提供足够的信息来解决这个问题。您可以创建一个脚本,在加载窗口结束时加载js脚本,例如:window.onload=function{var script=document.createElement'script';script.src='//example.com/js/thefile.js';document.body.appendChildscript;}实际上,这可能不是真的。js可能可以重新构建,以便加载一次,并且需要在该元素上触发的脚本会被多次触发。。。。但是你没有提供足够的信息来解决这个问题。