Обновление страницы CRM вызывает ошибку jQuery / Javascript - PullRequest
1 голос
/ 21 июля 2010

Дамы и господа,

У меня есть страница CRM, которая ссылается на 3 файла js (1x jQuery, 2x custom), все они хранятся в папке CRMInstall / isv /.

В методе OnLoad формы я загружаю каждый из них, а затем использую его для расширения / настройки пользовательского интерфейса.

Однако моя неопытность с 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 (function () {})

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

  • страница / загружает функции отлично

нажмите F5 (обновить)

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

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

В обоих случаях ошибка гласит:

Произошла ошибка в настраиваемом событии этого поля.
Поле: окно
Событие: OnLoad
Ошибка: ожидается объект

Ответы [ 2 ]

2 голосов
/ 21 июля 2010

Мне кажется, проблема в том, что к тому моменту, когда вы в первый раз включили функцию $ (document) .ready, Jquery еще не полностью загрузился .... вставка тега script не означает, что скрипт сразу готов киспользуйте ...

При второй загрузке 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!!")
    });
}
0 голосов
/ 11 апреля 2013

Добавьте jquery в качестве веб-ресурса, оберните ваш код (другой веб-ресурс) внутри собственной функции javascript и добавьте событие для Form OnLoad, вызывающее эту функцию.Не забудьте поместить jquerywebresource перед пользовательским кодом.см. пример здесь .

...