Леди и джентльмены,
У меня есть страница CRM который ссылки 3 js файла, (1x jQuery, 2x пользовательский) все сохраненные в папке CRMInstall/isv/.
На форме метод OnLoad я загружаю каждого и затем использую его для расширений/настраивания UI.
Моя неопытность с jQuery, очевидно, показывает однако!
Код OnLoad ниже:
//jquery
var url = "/isv/jquery-1.4.2.js";
var scriptElement = document.createElement("<script src='" + url + "' language='javascript'>");
document.getElementsByTagName("head")[0].insertAdjacentElement("beforeEnd", scriptElement);
$(document).ready(function()
{
$.getScript("/isv/common.js", function()
{
$.getScript("/isv/account.js", function()
{
$(document).ready(function()
{
SetUpAccountForm();//call to account.js
});
});
});
});
И это вызывает следующее (использующий IE8):
Первая загрузка страницы (никакие файлы во временной интернет-папке файлов)
Вторая загрузка страницы (все файлы теперь во временной интернет-папке файлов)
хит F5 (обновление)
Где я иду не так, как надо? Это, потому что я добавляю ссылку на сценарий jQuery дважды?
В обоих случаях ошибочные чтения:
Была ошибка со специализированным событием этого поля.
Field:window
Event:onload
Error:Object ожидается
Я думаю, проблема в том, что к тому моменту, когда вы в первый раз нажимаете функцию $ (document) .ready, JQuery не загружается полностью ... вставка тега скрипта не означает что скрипт сразу готов к использованию ...
При второй загрузке js-файлы уже находятся в кеше, поэтому загрузка происходит намного быстрее, но когда вы нажимаете F5, он повторно загружает все из сервер и вы вернулись к первому делу.
эту проблему можно решить, добавив функцию к событию onload вставляемого вами узла сценария:
var url = "http://code.jquery.com/jquery-1.4.2.min.js";
var head = document.getElementsByTagName("head")[0];
var scriptNode = document.createElement('script');
scriptNode.type = 'text/javascript';
scriptNode.src = url;
scriptNode.onload = jQueryLoaded;
head.appendChild(scriptNode);
function jQueryLoaded()
{
$(document).ready(function() {
$("#some").text("Jquery loaded!!")
});
}