Если я добавлю jQuery через букмарклет, испортит ли он оригинальный javascript на сайте? - PullRequest
6 голосов
/ 25 апреля 2010

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

Марти Лайн

1 Ответ

3 голосов
/ 25 апреля 2010

Это сломается? .... возможно :)

Есть две действительно распространенные причины, почему это произойдет. Если они используют другую библиотеку, которая использует $ для своего основного объекта, тогда вы получите конфликт, однако это можно решить с помощью 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.
...