Обновляющие Причины Страницы CRM jQuery/ошибка JavaScript

Леди и джентльмены,

У меня есть страница 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):
Первая загрузка страницы (никакие файлы во временной интернет-папке файлов)

  • ошибка при ударе $ (документ) .ready (функция () {})

Вторая загрузка страницы (все файлы теперь во временной интернет-папке файлов)

  • прекрасные функции страницы/загрузок

хит F5 (обновление)

  • ошибка при ударе $ (документ) .ready (функция () {})

Где я иду не так, как надо? Это, потому что я добавляю ссылку на сценарий jQuery дважды?

В обоих случаях ошибочные чтения:

Была ошибка со специализированным событием этого поля.
Field:window
Event:onload
Error:Object ожидается
1
задан glosrob 21 July 2010 в 15:30
поделиться

1 ответ

Я думаю, проблема в том, что к тому моменту, когда вы в первый раз нажимаете функцию $ (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!!")
    });
}
2
ответ дан 2 September 2019 в 22:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: