Mozilla Addon SDK - Проблема с примером Reddit на 2-й странице - PullRequest
0 голосов
/ 27 июля 2011

У меня возникла эта проблема во время разработки моего собственного аддона, но я получаю то же самое с примером reddit, поэтому я буду использовать это для простоты.

Использование точного кода из найденного примера здесь , вот что происходит.

Пример Reddit

Этот пример надстройки создает панель, содержащую мобильную версию Reddit.Когда пользователь нажимает на заголовок статьи на панели, надстройка открывает связанный рассказ на новой вкладке в главном окне браузера.

Для этого надстройке необходимо запустить контент.скрипт в контексте страницы Reddit, который перехватывает щелчки мышью по каждой ссылке на заголовок и выбирает целевой URL ссылки.Затем сценарию содержимого необходимо отправить URL-адрес к сценарию надстройки.

main.js:

var data = require("self").data;

var reddit_panel = require("panel").Panel({
  width: 240,
  height: 320,
  contentURL: "http://www.reddit.com/.mobile?keep_extension=True",
  contentScriptFile: [data.url("jquery-1.4.4.min.js"),
                  data.url("panel.js")]
});

reddit_panel.port.on("click", function(url) {
  require("tabs").open(url);
});

require("widget").Widget({
  id: "open-reddit-btn",
  label: "Reddit",
  contentURL: "http://www.reddit.com/static/favicon.ico",
  panel: reddit_panel
});

panel.js:

$(window).click(function (event) {
  var t = event.target;

  // Don't intercept the click if it isn't on a link.
  if (t.nodeName != "A")
    return;

  // Don't intercept the click if it was on one of the links in the header
  // or next/previous footer, since those links should load in the panel itself.
  if ($(t).parents('#header').length || $(t).parents('.nextprev').length)
    return;

  // Intercept the click, passing it to the addon, which will load it in a tab.
  event.stopPropagation();
  event.preventDefault();
  self.port.emit('click', t.toString());
});

Значок отображается на панели, и при нажатии на него запускается панель.Если щелкнуть ссылку на панели, откроется ее на новой вкладке, как описано и ожидается.

При нажатии на ссылку «следующая страница» на вкладке будет получена следующая страница на панели - как и ожидалось.

Если щелкнуть ссылку на 2-й странице, она не открывается на вкладке, она открывается внутри панели.

Вот мое предположение: когда страница перезагружается внутри панели, она не перезагружает скриптуказано в contentScriptFile.Кто-нибудь еще испытывает это?И есть ли обходной путь?

Я использую SDK 1.0 и FF 5.0

Вопрос, кросс-пост на форуме Аддона здесь

1 Ответ

0 голосов
/ 28 июля 2011

Получено этот ответ на форуме Mozilla, и будет публиковаться здесь для дальнейшего использования.

Возможно, вы видите Ошибка 667664 - Скрипты содержимого панели не работают после перезагрузки или изменения местоположения . Я думаю, что обходной путь заключается в загрузке контента в iframe.

Что, мне кажется, может иметь место, я попробую это в течение дня и сообщу.

РЕДАКТИРОВАТЬ: iframe, кажется, делает трюк

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