经过数小时尝试不同的尝试并面临 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)
})()
火狐
在 Firefox 上,由于Content-Security-Policy
错误,上述解决方案不起作用。但以下解决方法目前正在发挥作用,至少目前是这样:
- 将 2 个脚本添加到
content_scripts
,例如inject.js
和script.js
- 该
inject
脚本将获得完整的绝对URL中的script.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
脚本将获得完整的绝对URL中的script.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