将函数/变量从 chrome 扩展程序注入到页面
Inject functions/variables to page from a chrome extension
我正在编写一个Chrome扩展程序,为用户访问的某些页面添加功能。
为此,我需要注入一些页面需要能够调用的变量和函数。
这些变量/函数在内容脚本中生成。
但是,由于内容脚本在僻静的环境中运行,因此主机页面无法访问它。
根据这篇文章:http://code.google.com/chrome/extensions/content_scripts.html#host-page-communication内容脚本和主机页面可以通过添加事件通过 DOM 进行通信。
但这是一种可怕的做事方式,我真的很想看到一些轻松注入方法/变量的方法。
有这种可能吗?
谢谢!
如果仍然有人感兴趣,我已经找到了一种通过消息在内容脚本和页面本身之间进行通信的解决方案。
发送脚本上的内容如下:
window.postMessage({ type: "messageType", params: { param: "value", anotherParam: "value" } }, "*"/*required!*/);
然后在接收脚本上执行以下操作:
window.addEventListener("message", function(event) {
// We only accept messages from ourselves
if (event.source != window)
return;
switch (event.data.type) {
case "blabla":
// do blabla
// you can use event.data.params to access the parameters sent from page.
break;
case "another blabla":
// do another blabla
break;
}
});
这是我在扩展上编码它的方式,http://pagexray.com/extension/
在您的清单上.json
"content_scripts": [
{
"matches": ["http://*/*"],
"js": ["script.js"]
}
],
在您的脚本上.js
(function(){
var script = document.createElement('script');
script.src = "http://example.com/external.js";
script.addEventListener('load', function() { });
document.head.appendChild(script);
})();
相关文章:
- 正在将lodash注入Angular提供程序
- 注入应用程序的角度控制器未定义
- 在出厂时注入服务错误: [$injector:unpr] 未知提供程序: $scopeProvider <- $scop
- List.JS 在通过 Chrome 扩展程序注入时不起作用
- Angular2文档-层次依赖注入程序(恢复服务)
- $injector:modulerr将自定义模块注入Angular应用程序
- 当服务注入到其他地方时,角度提供程序配置重置
- Angular正在提供程序中注入$rootScope
- 恶意软件将代码注入我的Dojo/WebSocket应用程序:如何防止
- 为Backbone.js应用程序设计依赖注入系统的范围界定问题
- 如何使用 Chrome 扩展程序向网页注入按钮
- AngularJS - 将提供程序注入模块.config
- 通过 chrome 扩展程序删除注入的脚本
- AngularJS在应用程序初始化后注入模块
- 奇怪的chrome扩展程序问题:将iframe注入Gmail
- Chrome扩展程序的内容脚本未在特定网站上注入
- 在 AngularJS 应用程序中有条件地注入模块
- AngularJS:骨架应用程序上的注入器模块rr错误
- ASP.NET:是否可以将CSS或Javascript注入到我的Web应用程序中的每个页面中
- 为什么当服务注入第二个控制器时,AngularJS 1.4.8 应用程序不起作用