Вызов функции JS не будет работать в Chrome и Opera (JS + jQuery)

Я не могу заставить следующие функции работать в Chrome и Opera (последние версии для Windows XP). Код:

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

Кажется, все работает нормально, скрипт загружается, функция инициализации существует (несколько предупреждений об отладке в этом операторе setTimeout подтвердили, что тип "window.module_init" действительно является функцией). em>), но функция просто не запускается.

Я попытался поставить простое предупреждение в начале этой функции инициализации, оставить там ТОЛЬКО предупреждение - ничего не помогло.

Должен сказать, что я весьма озадачен этим, так как это прекрасно работает в Firefox и MSIE.

К вашему сведению, функция инициализации в этом внешнем js-файле просто выглядит так:

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

«уведомления» — это значение моей переменной «модуль» выше.

Любые советы высоко ценится :-)


person Zathrus Writer    schedule 05.10.2010    source источник
comment
Консоль не дает никаких подсказок?   -  person Felix Kling    schedule 05.10.2010


Ответы (3)


Как насчет setTimeout('window.'+module+'_init', 800); без фигурных скобок?

person tdammers    schedule 05.10.2010

Я только что проверил то, что вы здесь объясняете, и это отлично сработало. Я предполагаю, что внешний файл js, который вы загружаете с помощью $.getScript, содержит ошибки.

Не могли бы вы прокомментировать все внутри этого файла, кроме 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');
}
person Peter    schedule 05.10.2010

person    schedule
comment
это решило это, спасибо... один вопрос, однако - должен ли я использовать окно как массив вместо использования window.variable для доступа к переменной, определенной таким образом: var abc = 1 - person Zathrus Writer; 05.10.2010
comment
Вы не используете окно как массив, это просто другое обозначение...javascripttoolbox.com/bestpractices /#квадратная скобка - person Ravindra Sane; 05.10.2010