Предотвратить множественную ссылку jQuery - PullRequest
3 голосов
/ 31 августа 2009

Я занимаюсь разработкой модулей DNN и использую jQuery в некоторых модулях. Я добавляю ссылку jQuery в начало каждого файла ascx, когда пользователь добавляет несколько модулей на страницу, на которую он ссылается каждый раз при добавлении модулей, эта ситуация дает некоторые ошибки, когда я удаляю ссылку из модуля, который является нижней частью другого модуля, который использует jQuery, они работают хорошо, есть ли способ предотвратить множественную ссылку на jQuery? Я имею в виду, если на него ссылаются на странице, прежде чем он не будет ссылаться снова. Спасибо.

Ответы [ 3 ]

6 голосов
/ 31 августа 2009

Вы можете сделать небольшой скрипт, чтобы проверить, присутствует ли jQuery на странице, и только если его нет, загрузите его:

// 'load-jquery.js'
window.onload = function () {
  if (window.jQuery === undefined) {
    var script = document.createElement('script');
    script.src = 'path/to/jquery.min.js';
    document.getElementsByTagName('head')[0].appendChild(script); // load jQuery
  }
};
3 голосов
/ 31 августа 2009

Если вы используете DNN 5.x, вы должны использовать версию jQuery для ядра DNN, вызывая DotNetNuke.Framework.jQuery.RequestRegistration().

Если вы имеете дело только с конфликтом внутри своих собственных модулей, вы можете добавить скрипт в код, а затем проверить, был ли он уже добавлен. Мы добавляем jQuery вручную в заголовок (создаем общий элемент управления HTML и добавляем его в Page.Header.Controls), затем вызываем Page.ClientScript.RegisterClientScriptBlock(), чтобы создать блок сценария для вызова jQuery.noConflict (чтобы он не вмешиваться в JavaScript DNN). Затем вы можете обернуть весь вызов, чтобы добавить jQuery в вызов к Page.ClientScript.IsClientScriptBlockRegistered(), чтобы он добавлялся только один раз.

2 голосов
/ 31 августа 2009

Если вы загружаете jQuery в среде с высоким уровнем конфликта, попробуйте пространство имен jQuery.

SOMETHING = {
    jQuery: jQuery,
    $: $
}

А затем вызвать jQuery через SOMETHING. $ Или SOMETHING.jQuery. Просто не забудьте сделать пространство имен, как только загрузится нужная версия jQuery, иначе вы получите неправильную версию. Если у вас есть доступ к файлу jQuery, самый простой способ сделать это - добавить код пространства имен в конец файла.

...