【问题标题】:JS function call won't work in Chrome and Opera (JS + jQuery)JS 函数调用在 Chrome 和 Opera (JS + jQuery) 中不起作用
【发布时间】:2010-10-05 18:31:39
【问题描述】:

我似乎无法在 Chrome 和 Opera(Windows XP 上的最新版本)下使用以下功能。 代码是:

$.getScript('/js/modules/'+module+'.js', function() {
    setTimeout('window.'+module+'_init()', 800);
});

似乎一切正常,脚本加载,init 函数存在(setTimeout 语句中的一些调试警报验证了 "window.module_init" 类型确实是 函数),但该函数不会运行。

我尝试在该初始化函数的开头放置一个简单的警报,在那里只留下一个警报 - 没有任何帮助。

我必须说我对此感到很困惑,因为这在 Firefox 和 MSIE 下运行良好。

仅供参考,该外部 js 文件中的 init 函数如下所示:

function notifications_init() {
    alert('test');
}

通知”是我上面的“模块”变量的值

非常感谢任何建议:-)

【问题讨论】:

  • 控制台没有提示?

标签: javascript jquery google-chrome opera


【解决方案1】:
setTimeout(window[module+'_init'], 800);

【讨论】:

  • 解决了它,thanx ... 然而,一个问题 - 我应该使用 window 作为数组而不是使用“window.variable”来访问以这种方式定义的变量:var abc = 1
  • 您没有使用 window 作为数组,它只是一个不同的符号...javascripttoolbox.com/bestpractices/#squarebracket
【解决方案2】:

setTimeout('window.'+module+'_init', 800); 不带括号怎么样?

【讨论】:

    【解决方案3】:

    我刚刚测试了您在此处解释的内容,并且效果很好。我猜您使用$.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');
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      相关资源
      最近更新 更多