我似乎无法在 Chrome和Opera (Windows XP上的最新版本)下使用以下功能。 代码是:
$.getScript('/js/modules/'+module+'.js', function() {
setTimeout('window.'+module+'_init()', 800);
});
一切似乎工作正常,脚本加载,init函数存在(该setTimeout语句中的一些调试警报验证了“window.module_init”的类型确实是 功能 )但该功能不会运行。
我尝试在init函数的开头添加一个简单的警报,只留下警报 - 没有任何帮助。
我必须说我对此感到非常困惑,因为这在Firefox和MSIE下运行得很好。
仅供参考,外部js文件中的init函数看起来像这样:
function notifications_init() {
alert('test');
}
“通知”是我的“模块”变量
之上的值非常感谢任何建议: - )
答案 0 :(得分:1)
setTimeout(window[module+'_init'], 800);
答案 1 :(得分:0)
没有大括号的setTimeout('window.'+module+'_init', 800);
怎么样?
答案 2 :(得分:0)
我刚刚测试了你在这里解释的内容,它在这里工作得很好。我猜你使用$.getScript
加载的外部js文件包含错误。
除了你问题中的notifications_init()
之外,你能评论一下该文件中的所有内容吗?
这就是我所做的:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
alert('start');
var module = 'test';
$.getScript('/Scripts/' + module + '.js', function () {
alert('script was loaded and executed');
setTimeout('window.' + module + '_init()', 800);
});
alert('finish');
});
</script>
test.js只包含这个:
function test_init() {
alert('test function');
}