Ошибка Javascript, но только в Firefox 4

Я получаю следующую ошибку только в Firefox 4 (не в FF 3.6.16 , Safari, Chrome, Opera или IE):

jQuery("#list").jqGrid is not a function
   loadComplete: function(){console.log('complete');} 

myfile.js line 542

loadComplete - последняя строка блока кода jqgrid (это строка 542). Таким образом, он достигает конца вызова jqgrid и затем выдает эту ошибку.

Это на сайте, который работал нормально в течение прошлого года. Как только я обновился до Firefox 4, я столкнулся с этим. Я уверен, что загружаю этот вызов в jqgrid после того, как загружаю весь другой свой javascript (и он ДЕЙСТВИТЕЛЬНО работает во всех других протестированных браузерах и более старых версиях Firefox).

Что могло вызвать нечто подобное? Я бы подумал, что это можно решить, просто убедившись, что вызов jqgrid был сделан после загрузки jquery и плагина jqgrid, но ... похоже, это уже так (я даже пытался установить 5-секундный тайм-аут при загрузке бит, который вызывает jqgrid, чтобы все было обязательно загружено, но все равно не работает). В любом случае, почему только в FF4?


Дополнительная информация:

Вот порядок загрузки js на странице:

<script type="text/javascript" src="/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="/js/jquery-ui-1.8.1.custom.min.js"></script>
<script type="text/javascript" src="/js/i18n/grid.locale-en.js"></script>
<script type="text/javascript" src="/js/jquery.jqGrid.js"></script>
<script type="text/javascript" src="/js/ajaxupload.js"></script>

Затем конкретное представление, которое загружает вызовы jqgrid в конце страницы:

<script type="text/javascript" src="/js/viewspecific.js"></script>

Это последнее загружается с помощью метода Zend Framework, который может добавлять, добавлять или смещать загрузку файла. При устранении этой проблемы я явно использовал добавление, а также смещение, чтобы заставить этот скрипт загружаться последним. Я даже попытался просто включить необработанный JS в нижнюю часть скрипта представления, а не загружать его как отдельный файл, но ничего не изменилось.

Есть идеи, как это исправить?


Исправление, любезно Олег , это изменить способ загрузки различных включенных файлов. В загрузчике (jquery.jqGrid.js) вы увидите код для конкретного браузера, например:

if(jQuery.browser.safari ) {
    jQuery.ajax({url:filename,dataType:'script', async:false, cache: true});
} else {
if (jQuery.browser.msie) {
    document.write('<script type="text/javascript" src="'+filename+'"></script>');
} else {
    IncludeJavaScript(filename);
}
}

Я заменил его на более общий:

document.writeln("<script type='text/javascript' src='"+filename+"'></script>"); 

, и теперь все загружается нормально во всех браузерах.

6
задан Community 23 May 2017 в 11:44
поделиться