一尘不染

如何强制脚本重新加载并重新执行?

javascript

我有一个页面正在从第三方(新闻提要)加载脚本。src脚本的url在加载时动态分配(根据第三方代码)。

<div id="div1287">
    <!-- dynamically-generated elements will go here. -->
</div>

<script id="script0348710783" type="javascript/text">
</script>

<script type="javascript/text">
    document.getElementById('script0348710783').src='http://oneBigHairyURL';
</script>

http://oneBigHairyURL然后从中加载的脚本创建并加载具有新闻提要中各种内容的元素,并以漂亮的格式等将元素加载到其中div1287(传入ID“
div1287”,http://oneBigHairyURL以便脚本知道在何处加载内容)。

唯一的问题是,它只会加载一次。我希望它每n秒重新加载一次(从而显示新内容)。

所以,我想我会尝试一下:

<div id="div1287">
    <!-- dynamically-generated elements will go here. -->
</div>

<script id="script0348710783" type="javascript/text">
</script>

<script type="javascript/text">
    loadItUp=function() {
        alert('loading...');
        var divElement = document.getElementById('div1287');
        var scrElement = document.getElementById('script0348710783');

        divElement.innerHTML='';
        scrElement.innerHTML='';
        scrElement.src='';
        scrElement.src='http://oneBigHairyURL';
        setTimeout(loadItUp, 10000);
    };
    loadItUp();
</script>

div清除后,我得到警报,但是没有将动态生成的HTML重新加载到该警报。

知道我在做什么错吗?


阅读 480

收藏
2020-05-01

共1个答案

一尘不染

如何将新脚本标记添加到并加载(重新)加载脚本?如下所示:

<script>
   function load_js()
   {
      var head= document.getElementsByTagName('head')[0];
      var script= document.createElement('script');
      script.src= 'source_file.js';
      head.appendChild(script);
   }
   load_js();
</script>

要点是插入一个新的脚本标签-您可以删除旧的脚本标签而不会产生任何后果。如果存在缓存问题,则可能需要在查询字符串中添加时间戳。

2020-05-01