[英]Chrome extension. JS works on popup window and not on main window
[英]Injecting Redirect JS in Chrome extension. Fail! :(
我正在尝试生成一个扩展来保留我的兄弟 facebook。 因此,我决定将所有 facebook 链接重定向到谷歌以供初学者使用。
我就是这样做的。
我的 manifest.json 文件:
{
"name": "FBRehab"
"version": "1.0",
"description": "Redirect FB",
"permissions": [
"tabs", "http://www.facebook.com/*", "https://www.facebook.com/*"
],
"browser_action": {
"default_icon": "icon.png",
"background_page": "background.html"
},
]
}
我的背景。html:
<html>
<head>
<script>
chrome.tabs.executeScript(null, { file: "jquery.js" }, function() {
chrome.tabs.executeScript(null, { file: "try.js" });
});
</script>
</head>
和 try.js
<head>
<script language="JavaScript">
var time = null
function move() {
window.location = 'www.google.com'
}
</script>
</head>
但是,它不会重定向。 我也尝试过使用内容脚本直接注入 try.js。
请帮我。
感谢您。
阿沙尔:)
请记住,后台页面在 Chrome 中只运行一次,它是一个长时间运行的脚本,只运行一次。
基本上,您的代码现在所做的是,一旦您的浏览器加载,它将注入 jquery 并尝试将内容脚本添加到当前选项卡。 您当前没有加载任何选项卡(除非您让它自动加载选项卡,否则它将失败)。 然后它将不再做任何事情,因为背景页面只运行一次!
您需要做的是使用内容脚本,其定义如下:
// Only execute in the top window, we don't want to inject the iframes.
if (window == top) {
window.location = 'www.google.com'
}
在您的清单中,您将拥有以下内容:
{
"name": "No more Facebook extension",
...
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": ["redirect.js"]
}
],
...
}
我认为您想使用内容脚本而不是背景页面。 您可以指定您的内容脚本只应在特定的 web 页面上运行。
你曾经调用过 move() 吗? 对我来说看起来不像,但我以前从未开发过 Chrome 扩展程序......所以我不确定它是否会被自动调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.