Сгенерированный JQuery букмарклет не работает на некоторых сайтах - PullRequest
2 голосов
/ 27 января 2011

Я искал вокруг, но не могу найти ответ на этот вопрос.

Я использовал превосходное учебное пособие по закладкам на http://www.smashingmagazine.com/2010/05/23/make-your-own-bookmarklets-with-jquery/, которое показывает, как использовать JQuery для запуска iframe. Он добавляет блок на текущую страницу, проверяет JQuery, а затем запускает iframe с помощью команд jQuery. Это прекрасно работает, но я попал на posterous.com, где он не работает.

Для демонстрации перейдите к учебнику (http://www.smashingmagazine.com/2010/05/23/make-your-own-bookmarklets-with-jquery/), найдите букмарклет "WikiFrame" (примерно на половине пути вниз по странице), перетащите его на панель инструментов браузера и попробуйте на другом сайте, выделив текст и нажав bookmarklet. Отлично работает - всплывает фрейм страницы в Википедии.

Однако на posterous.com это ничего не делает. Блок сценария добавляется на страницу, но не срабатывает.

У кого-нибудь есть мысли о том, почему?

1 Ответ

2 голосов
/ 27 января 2011

В букмаркете викифрейма из этого руководства есть ошибка.

Он проверяет, существует ли объект jQuery, но затем продолжает использовать $. На posterous.com $ не равно jQuery.

 if (typeof jQuery == 'undefined') {
      //...
 } else {
      runthis();
 }

 function runthis() {
     if ($("#wikiframe").length == 0) {
          //...

Решением является использование jQuery вместо $ или псевдоним $ к jQuery, используя что-то вроде

(function($){ ... })(jQuery)
...