使用loadFrameScript,如何在页面前插入文件's脚本执行
Using loadFrameScript, how can inject file before the page's script execution?
我目前正在bootstrap.js
文件中使用它。在我使用recentBrowserWindow.messageManager.loadFrameScript(file, true)
:的情况下,用于编辑客户端的JavaScript代码
const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
Cu.import('resource://gre/modules/Services.jsm');
var file = 'chrome://testAddon/content/inject.js';
function startup(aData, aReason) {
var recentBrowserWindow = Services.wm.getMostRecentWindow('navigator:browser');
if(recentBrowserWindow.document.readyState == 'complete') {
recentBrowserWindow.messageManager.loadFrameScript(file, true);
}
}
inject.js:
var window = content;
var pageJS = window.wrappedJSObject;
console.log("jQuery is defined:", "jQuery" in window);
//true, jQuery is already assigned on client page.
但是这里脚本inject.js
在客户端页面之后运行。问题是:
如何在页面的脚本执行之前注入
inject.js
?。我应该使用什么方法?
来源:https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFrameScriptLoader
它说要使用document-element-inserted
,这将确保您的脚本在页面脚本运行之前运行。
我对框架脚本没有太多经验,其他人必须对此进行验证。
这是一个非常好的简单loadFrameScript示例:https://github.com/mdn/e10s-example-addons/tree/master/run-script-in-all-pages/ported-message-manager/src/chrome/content
在此处查看他如何执行DOMContentLoaded:https://github.com/mdn/e10s-example-addons/blob/master/run-script-in-all-pages/ported-message-manager/src/chrome/content/frame-script.js
将其更改为document-element-inserted
,但我认为这不是一个事件侦听器,而是一个观察者服务。
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 为什么spyOn"停止函数“”的所有执行;Jasmine(要求澄清Jasmine 2.2间谍文件)
- 无法执行文件.退出Acrobat PDF中的操作
- 外部链接的Javascript文件赢得't执行,但函数有效
- 如何从Node.js执行.exe文件
- 如何在Odoo 9中执行JS文件中的函数
- 外部JS文件可以'不得执行
- 你能用sound.js在播放声音文件后5秒执行一个动作吗
- 如何在不使用Internet Explorer的情况下从未挂起的HTML文件执行程序
- 从另一个文件执行脚本
- 脚本未从外部文件执行
- 如何对包含在父 html 中的子 html 文件执行脚本
- 如何通过 ajax 单击时从 javascript 文件执行节点(控制台)命令
- 如何通过文件 API 从 json 文件执行数据
- 节点js文件执行
- 如何使用单个javascript文件执行来影响多个网页
- 在JS中从php文件执行字符串,setTimeout vs eval()
- PHP包含文件执行失败
- Javascript for循环异步文件执行
- BabylonJS从外部文件执行脚本