我有一个页面正在从第三方(新闻提要)加载脚本。脚本的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
中(在http://oneBigHairyURL
中传递ID“div1287”,以便脚本知道在哪里加载内容)。
唯一的问题是,它只加载一次。我希望它每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被重新加载到它。
知道我哪里做错了吗?
7条答案
按热度按时间puruo6ea1#
如何添加一个新的脚本标记到脚本(重新)加载?类似于下面的内容:
主要的一点是插入一个新的脚本标记--您可以删除旧的标记而不会产生任何后果。如果您有缓存问题,您可能需要向查询字符串添加一个时间戳。
68bkxrlz2#
这里有一个类似于Kelly的方法,但将删除任何具有相同源代码的预先存在的脚本,并使用jQuery。
注意,HTML5的脚本不再需要“type”属性。(http://www.w3.org/html/wg/drafts/html/master/scripting-1.html#the-script-element)
gk7wooem3#
创建一个新的script标记并复制现有script标记的内容,然后添加它,效果很好。
如果您希望脚本每次都发生变化,那么这是行不通的,我相信这是您的情况,您应该遵循Kelly的建议,删除旧的script标记(只是为了保持DOM的精简,它不会影响结果),并重新插入一个具有相同src的新script标记,外加一个cachebuster。
oknwwptz4#
卢克的回答有个小改动
并称之为
这将不会有任何路径相关的问题。
xesrikrc5#
使用此函数查找包含某个单词的所有脚本元素并刷新它们。
jyztefdp6#
使用PipesJS,我可以将其稀释为
您将使用此状态来影响与JS源代码相同的文章。
所以用
将在此作用域中执行与
<article>
相同的操作。它将填充innerHTML。如果需要,请在
<head>
标记上使用id。你可以插入抢占式函数并与PipesJS一起使用它们。你也可以使用在调用之后的函数。
如果您更愿意使用计时器,则可以通过创建
setInterval()对象。3000以毫秒为单位。
你可以在这里看到PipesJS。
pxy2qtax7#
我知道这有点晚了,但是我想分享我的答案,我所做的是把脚本的标签保存在一个HTML文件中,把我的索引文件中的脚本,用一个id锁在一个div中,类似这样。
当我想刷新的时候,我就用了。