2016-01-10 2 views
2

Я работаю над плагином Firefox, используя Jetpack, способный взаимодействовать с содержимым браузера, в частности, моя цель - иметь возможность плагина выбирать объекты DOM веб-страницы и собирать информацию со страницы внутри моего плагина.Плагин Firefox, который модифицирует страницу DOM

Мой главное, что я хотел бы получить доступ к веб-странице с помощью сценария, который не является непосредственно внутри самого плагина:

плагин может загрузить внешнюю службу (с моего сервера) и может получить доступ к страницу веб-браузера DOM.

Это из-за тот факт, я хотел бы отделить плагин врезке-FireFox из реальной бизнес-логики, чтобы изменить что не отпуская другой плагин ...

Возможно ли это? И, если да, то как?

+0

Я думаю, что это возможно, но у плагина, который вы создаете, будут проблемы, если вы попытаетесь проверить и обновить расширение до Addons Marketplace. Если это не проблема, вы можете прикрепить скрипт к странице и загрузить JS с вашего сервера. Затем вы можете получить доступ к DOM. –

+0

Благодарим вас за ответ. Цель плагина не поставляться на добавочной площадке, поэтому я думаю, что это не проблема. Вы не знаете, как включить скрипты? – Gian

+0

Вы используете jpm или что-то еще, чтобы строить из аддона? –

ответ

1

Вы можете прикрепить работник к любой новой вкладке, таким как: main.js:

var pageMod = require("sdk/page-mod"); 

pageMod.PageMod({ 
    include: "*", 
    contentScriptWhen: 'ready', 
    contentScriptFile: [ 
    data.url("jquery.min.js"), 
    data.url("script.js") 
    ] 
}); 

выше код просто придает Jquery и вы script.js на любую страницу. Вы можете найти дополнительные опции по прикреплению скриптов here. Примечание. Script.js и jquery.min.js должны быть в папке ./data/ расширения.

Теперь у нас есть script.js, работающий на каждой странице. Как мы можем выполнять код с другого сервера?

Для этого вы можете использовать jQuery.getScript().

Например, в вашем script.js:

var url = "https://code.jquery.com/color/jquery.color.js"; 
$.getScript(url, function() { 
    $("#go").click(function() { 
    $(".block") 
     .animate({ 
     backgroundColor: "rgb(255, 180, 180)" 
     }, 1000) 
     .delay(500) 
     .animate({ 
     backgroundColor: "olive" 
     }, 1000) 
     .delay(500) 
     .animate({ 
     backgroundColor: "#00f" 
     }, 1000); 
    }); 
}); 

Вы можете изменить script.js для собственных нужд.

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