jQuery: «this.cloneNode не является функцией» при включении на страницу с прототипом - PullRequest
0 голосов
/ 02 февраля 2009

Я пытаюсь использовать jQuery в букмарклете, что означает, что у меня нет контроля над страницей, в которую будет вставлен JavaScript. Из того, что я читал о noConflict , требуется, чтобы jQuery был вставлен первым. В случае букмарклета верно только обратное.

Итак, есть ли у кого-нибудь предложения о том, возможно ли это? Я нашел, что это работает за исключением страниц, которые используют prototype.js. На этих страницах, когда я пытаюсь использовать библиотеку пользовательского интерфейса jQuery, я получаю сообщение об ошибке «this.cloneNode не является функцией» в недрах jQuery, предположительно потому, что что-то в прототипе мешает.

Любая помощь / совет будет оценен.

1 Ответ

1 голос
/ 03 февраля 2009

noConflict должен вызываться после включения jQuery и до включения какой-либо другой библиотеки. Поэтому хорошо включить jQuery в последнюю очередь, а затем вызвать noConflict - тогда он должен вернуть переменную $ к тому, что было до включения jQuery.

Это какая-то боль. Ваша закладка должна:

if(!jQuery) {
    include_jQuery();
    var $ = jQuery.noConflict();
} else {
    var $ = jQuery;
}
// do things with $

Во избежание разрушения страницы, если на ней уже был jQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...