当div重新加载时,如何重新运行js文件?
在头脑中,我有这个脚本:
<script type="text/javascript">
var auto_refresh = setTimeout(
function ()
{
$('#scoreboard').fadeIn("slow");
}, 3000); // refresh every 10000 milliseconds
</script>
在正文中,我有这个div和js文件:
<div id="scoreboard">
<script language="javascript"
src="http://www.sportsnetwork.com/aspdata/clients/cbaskscoreboard.aspx?team=B87">
</script>
</div>
我想在定时间隔内重新运行javascript文件。可以吗?
答案 0 :(得分:3)
如何重新运行javascript文件:
使用JQuery:
$.getScript("my_javascript.js", function(){
alert("Script loaded and executed.");
// Here you can use anything you defined in the loaded script
});
有关其工作原理的详细信息:How do I include a JavaScript file in another JavaScript file?
答案 1 :(得分:1)
这是错误的做法。
您应该在<head>
或<body>
底部添加一个脚本文件。该脚本文件应该定义一个您可以调用的函数。现在,您可以直接通过setTimeout
。
说JS文件有这个:
var sayHello = function() {
alert('Hello!');
};
现在包含这样的文件:
<head>
<script type="text/javascript" src="myscript.js"></script>
</head>
现在将超时代码更改为:
var auto_refresh = setTimeout(function() {
$('#scoreboard').fadeIn("slow");
sayHello();
}, 3000);
这是一个很好的做法,永远不要包含一个javascript文件“做”的东西,因为你发现它很难让它再次做到这一点。相反,它应该定义函数或对象,可以根据需要多次调用它们。
答案 2 :(得分:0)
我同意Squeegy的说法,你最好的解决办法是调用一个函数,但如果你不是所包含脚本的作者并且必须找到解决方案,我会建议一些事情:
[编辑11月22日12:27 pm]
现在,我更好地理解您尝试从中提取的页面是一个返回document.write
的脚本。我认为有两个选项。我已经在这里插入了一些细节,并将我原来的帖子留给了后人。
选项1:
www.yourdomain.com/sportsnetwork/B87/
。setInterval
函数中构建一个iframe作为源代码,然后将其注入记分板<div>
。选项2:
document.write
并传回html。setIntercal
函数中发出ajax请求以获取html并将其插入到记分板<div>
中。原始选项不适用于document.write
:
var auto_refresh = setInterval(
function () {
$('#scoreboard').fadeIn("slow");
var unique = Date.now();
var scriptFile = document.createElement('script');
scriptFile.type = 'text/javascript';
scriptFile.async = true;
scriptFile.src = 'http://www.sportsnetwork.com/aspdata/clients/sportsnetwork/pullouts/logoscores/cbaskscoreboard.aspx?team=B87&unique=' + unique;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(scriptFile, s);
}, 3000);
这将每隔3秒向页面添加一个新脚本,浏览器会认为由于unique
标记而认为它是一个不同的脚本。我认为你可能需要根据脚本的重新加载来重新设置淡入淡出的时间。