经过数小时尝试不同的尝试并面临 CORS 等安全问题后,我找到了window
在和. 您需要对每种策略使用不同的策略:Chrome
Firefox
Safari
铬合金
- 将您的脚本添加到
content_scripts
.
- 在您的脚本文件中,将 a 附加
script
到页面并使其内联运行您的自定义代码。像这样:
;(function() {
function script() {
// your main code here
window.foo = 'bar'
}
function inject(fn) {
const script = document.createElement('script')
script.text = `(${fn.toString()})();`
document.documentElement.appendChild(script)
}
inject(script)
})()
火狐
Content-Security-Policy
在 Firefox 上,由于错误,上述解决方案不起作用。但是以下解决方法目前正在起作用,至少目前是这样:
- 将 2 个脚本添加到
content_scripts
,例如inject.js
和script.js
- 该
inject
脚本将获取文件的完整绝对urlscript.js
并加载它:
;(function() {
const b = typeof browser !== 'undefined' ? browser : chrome
const script = document.createElement('script')
script.src = b.runtime.getURL('script.js')
document.documentElement.appendChild(script)
})()
- 您的
script.js
将包含您的主要代码:
;(function() {
// your main code here
window.foo = 'bar'
})()
苹果浏览器
它与 Firefox 非常相似。
- 创建 2 个 javascript 文件,例如
inject.js
和script.js
- 该
inject
脚本将获取文件的完整绝对urlscript.js
并加载它:
;(function() {
const script = document.createElement('script')
script.src = safari.extension.baseURI + 'script.js'
document.documentElement.appendChild(script)
})()
- 您的
script.js
将包含您的主要代码:
;(function() {
// your main code here
window.foo = 'bar'
})()
源代码
在此处查看完整代码:https ://github.com/brunolemos/simplified-twitter