2014-09-17 3 views
1

Я пытаюсь написать свое первое расширение с помощью Firefox Addon SDK - текущий код просто тестирует то, что возможно (просто уточнить).Расширение Firefox-страницы Firefox не работает после первой подстраницы до перезагрузки страницы

Проблесковая часть кажется расширением не работает после первой загрузки страницы и перемещения между подстраницами. Страница загружается полностью, расширение «пинает» и изменяет страницу, как предполагалось (на site.com/directory например), но после перехода на подстраницу (site.com/directory/all) расширение больше не работает. Если я делаю CTRL + R и обновляю страницу, загрузка сайта снова и расширение работает даже на этой подстранице.

main.js

// Import the page-mod API 
var pageMod = require("sdk/page-mod"); 
// Import the self API 
var self = require("sdk/self"); 
// Create a page mod 
pageMod.PageMod({ 
    include: "*", 
    contentScriptFile: [self.data.url("jquery-2.1.1.min.js"), self.data.url("script.js")] 
}); 

script.js

$(".directory_header").css('border', '#500 solid 10px'); 

Include устанавливается, как это только для целей тестирования. Сценарий сайта запрещен для работы с twitch.tv и их подкатегорией/directory. В настоящее время поиск класса directory_header и установка границы вокруг него, однако после перехода в каталог/все границы не будут загружаться снова, пока страница не будет полностью перезагружена. Есть ли причина такого поведения?

Что Ive пытался

Я пытался использовать

attachTo: ["top", "frame", "existing"] 

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

contentScriptWhen: 'start' 

еще раз, без результата.

+0

Да, вам нужно пройти через все окна и все вкладки при запуске и приложить их к ним, если вы хотите запустить сразу. Не забудьте выполнить итерацию всех окон и вкладок при выгрузке, чтобы выгрузить их при удалении. Вот как я это делаю в своих загрузочных аддонах. – Noitidart

ответ

2

Звучит как изменение состояния HTML5, где содержимое страницы изменяется через AJAX. Документ/страница на самом деле не меняется, поэтому модификация страницы никогда не будет активирована. Вам нужно создать слушателя в сценарии содержимого для истории pushstate. См. this answer о том, как это сделать.

В обратном вызове вы должны будете повторно вызвать свой код script.js.

+0

@poss. Либо это, либо это может быть PJAX, который я не думаю, что использует pushstate совершенно так, что это становится тяжело. Если вы используете PJAX, вам необходимо подключить прослушиватели событий через jquery самого веб-сайта. – Blagoh

Смежные вопросы