Firefox Addon Scripting Trusted Page Content

Така че се опитвам да използвам chrome:// URI в моята добавка и искам да използвам page-worker върху него, използвайки метода за надеждно съдържание за скриптове, но изглежда, че не работи, когато кодирам URI кода в, chrome://<package name>/<part>/<file>; обаче работи, когато използвам self.data.url('filename'). Искам да използвам chrome:// URI, защото използвам GUID вместо имейл стила като ID на добавката и също така не искам да използвам resource:// URI.

Скрипт за съдържание

addon.port.emit('hi');

HTML

<html>
   <head>
      <meta charset="UTF-8">
        <title>Gaia Utils Settings</title>
        <script type="text/javascript" src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
        <script type="text/javascript" src="chrome://gaiascripts/content/dropdown.min.js"></script>
        <script type="text/javascript" src="chrome://gaiascripts/content/settings.dev.js"></script>
        <script type="text/javascript" src="chrome://gaiascripts/content/test.dev.js"></script>
        <link href="/bgcss/bootstrap.min.css" rel="stylesheet" type="text/css">
      <link href="/bgcss/settings.css" rel="stylesheet" type="text/css">
      <link href="/bgcss/poststyle.css" rel="stylesheet" type="text/css">
   </head>
   <body>
      <nav id="navbar_header" class="navbar navbar-blue navbar-static-top"></nav>
      <div id="content_wrapper" class="container">
         <div id="content_padding" class="container"></div>
      </div>
      <footer class="footer"></footer>
   </body>
</html>

main.js

var PageWorker = require("sdk/page-worker");
PageWorker.Page({
   contentURL: "chrome://gaiautils/content/settings.dev.html",
   onMessage: function(message) {
      console.log(message);
   }
});

Знам, че мога да използвам page-mod и да прикача скриптовете към него с това, но предпочитам да извикам скриптовете от файла и да мога да комуникирам с основния код на добавката. И така, има ли начин да мога да си взема тортата и да я изям също - използвайки твърдо кодирания chrome:// URI във връзка с извикване на скриптовете от HTML файла, като същевременно мога да накарам тези скриптове да комуникират обратно към главния. js файл?


person Knight Yoshi    schedule 21.07.2014    source източник
comment
Никога не зареждайте отдалечени скриптове във вашия код на добавка!   -  person nmaier    schedule 21.07.2014
comment
Що се отнася до останалата част от въпроса: Какъв точно е вашият проблем? Какво не работи? Каква е грешката, когато опитате?   -  person nmaier    schedule 21.07.2014
comment
Въпросът е, тъй като използвам chrome:// URI, как мога да го имам, за да мога да използвам addon.port.emit() в скриптовете за съдържание, които се извикват директно в HTML файла, така че да не не трябва да използвам self.data.url('htmlFile'), защото не искам да използвам ресурса //pageckage-GUID-at-jetpack/path/to/file Както казах, знам, че мога използвайте page-mods, но това означава, че не извиквам скриптовите файлове в рамките на HTML файла.   -  person Knight Yoshi    schedule 21.07.2014


Отговори (1)


Как мога да го имам, за да мога да използвам addon.port.emit() в скриптовете за съдържание, които се извикват директно в HTML файла, така че да не се налага да използвам self.data.url('htmlFile') , защото не искам да използвам ресурса //pageckage-GUID-at-jetpack/path/to/file

SDK счита страниците за „надеждни“ само ако URL адресът, който зареждате, е част от активите на добавката (data/). chrome:// URI не са. Следователно ще трябва да използвате обикновени скриптове за съдържание чрез опцията contentScriptFile: [...] във вашата дефиниция на PageWorker.

<script type="text/javascript" src="http://code.jquery.com/jquery-2.1.1.min.js"></script>

Никога не зареждайте отдалечени скриптове от съображения за сигурност (и от съображения за производителност в много по-малка степен)! Изпратете локално копие на jQuery, ако искате да го използвате.

person nmaier    schedule 21.07.2014
comment
Е, това е гадно, но има смисъл. Благодаря! И така, ако ще използвам contentScriptFile, каква е разликата между това и page-mod, когато става въпрос за инжектиране на скриптове за съдържание в страницата, има ли разлика? Знам, че със page-mods можете да добавите и лист със стилове. Благодаря за съвета за местния jQ файл. - person Knight Yoshi; 21.07.2014