Browse Source

Firefox: implement vAPI.tabs.injectScript

pull/2/head
Deathamns 10 years ago
committed by gorhill
parent
commit
d66b8aa329
  1. 25
      platform/firefox/frameModule.js

25
platform/firefox/frameModule.js

@ -113,7 +113,18 @@ let contentPolicy = {
}; };
let docObserver = { let docObserver = {
contentBaseURI: 'chrome://' + appName + '/content/js/',
contentBaseURI: 'chrome://' + appName + '/content/',
injectScript: function(script, evalCode) {
if (evalCode) {
Components.utils.evalInSandbox(script, this);
return;
}
Services.scriptloader.loadSubScript(
docObserver.contentBaseURI + script,
this
);
},
initContext: function(win, sandbox) { initContext: function(win, sandbox) {
let messager = getMessager(win); let messager = getMessager(win);
@ -125,6 +136,12 @@ let docObserver = {
}); });
win.self = win; win.self = win;
Components.utils.exportFunction(
this.injectScript,
win,
{defineAs: 'injectScript'}
);
} }
win.sendAsyncMessage = messager.sendAsyncMessage; win.sendAsyncMessage = messager.sendAsyncMessage;
@ -158,12 +175,12 @@ let docObserver = {
let lss = Services.scriptloader.loadSubScript; let lss = Services.scriptloader.loadSubScript;
win = this.initContext(win, true); win = this.initContext(win, true);
lss(this.contentBaseURI + 'vapi-client.js', win);
lss(this.contentBaseURI + 'contentscript-start.js', win);
lss(this.contentBaseURI + 'js/vapi-client.js', win);
lss(this.contentBaseURI + 'js/contentscript-start.js', win);
let docReady = function(e) { let docReady = function(e) {
this.removeEventListener(e.type, docReady, true); this.removeEventListener(e.type, docReady, true);
lss(docObserver.contentBaseURI + 'contentscript-end.js', win);
lss(docObserver.contentBaseURI + 'js/contentscript-end.js', win);
}; };
doc.addEventListener('DOMContentLoaded', docReady, true); doc.addEventListener('DOMContentLoaded', docReady, true);

Loading…
Cancel
Save