Я создаю bookmarklet, и конечно я хотел бы использовать jQuery. Но, если я буду включать jQuery (добавьте тег script для заголовка) то на сайте, будет сам сайт больше работать, если он будет иметь некоторый другой js на?
Martti Laine
Он сломается? .... может быть :)
Есть две очень распространенные причины, которые у меня в голове, что это могло произойти. Если они используют другую библиотеку, которая использует $
в качестве основного объекта, то вы получите конфликт, однако его можно разрешить с помощью 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.