JS函数调用在Chrome和Opera(JS + jQuery)中不起作用

时间:2010-10-05 18:31:40

标签: javascript jquery google-chrome opera

我似乎无法在 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');
}

通知”是我的“模块”变量

之上的值

非常感谢任何建议: - )

3 个答案:

答案 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');
}