Если я буду включать jQuery через bookmarklet, то он разрушит исходный JavaScript на сайте?

Я создаю bookmarklet, и конечно я хотел бы использовать jQuery. Но, если я буду включать jQuery (добавьте тег script для заголовка) то на сайте, будет сам сайт больше работать, если он будет иметь некоторый другой js на?

Martti Laine

6
задан Martti Laine 25 April 2010 в 08:48
поделиться

1 ответ

Он сломается? .... может быть :)

Есть две очень распространенные причины, которые у меня в голове, что это могло произойти. Если они используют другую библиотеку, которая использует $ в качестве основного объекта, то вы получите конфликт, однако его можно разрешить с помощью jQuery.noConflict () , например:

var $j = jQuery.noConflict(); //give `$` back to whatever had it...
$j("selector").doSomething(); //use the $j you assigned or jQuery from now on

Во-вторых, у них уже загружен jQuery (возможно, и другая версия). Я бы просто добавил тест объекта jQuery перед загрузкой вашего скрипта, например:

if (typeof jQuery == 'undefined') { //load jQuery }
//jQuery has been loaded, either by your or originally, keep going...

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

Кроме того, я бы объединил эти два обходных пути для случая, когда jQuery уже загружен, а - это $ , например:

if (typeof jQuery == 'undefined') {
  var used = typeof $ != 'undefined';
  //load jQuery 
  if(used) jQuery.noConflict();
}
window.$j = jQuery;
//always use $j in your script, it'll always be present.
3
ответ дан 17 December 2019 в 18:11
поделиться
Другие вопросы по тегам:

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