在Chrome扩展程序中注入Redirect JS。失败! :(

时间:2011-06-03 23:53:15

标签: javascript google-chrome google-chrome-extension

我正在尝试生成一个让我的兄弟知道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"    
      },
  ]
}

我的background.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.

请帮帮我。

感谢你。

Ashar:)

3 个答案:

答案 0 :(得分:2)

请记住,Background Page只在Chrome中运行一次,它是一个长时间运行的脚本,只运行一次。

基本上你的代码现在所做的是,一旦你的浏览器加载,它将注入jquery并尝试Content Scripts到当前选项卡。您没有当前加载的选项卡(除非您自动加载选项卡,否则它将失败)。然后它将不再做任何事情,因为背景页面只运行一次!

您需要做的是使用Content Script,其定义如下:

// 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"]
    }
  ],
  ...
}

答案 1 :(得分:1)

我认为你想使用content script而不是背景页面。您可以指定您的内容脚本只应在特定网页上运行。

答案 2 :(得分:0)

你有没有打电话给move()?对我来说看起来不像,但我之前从未开发过Chrome扩展程序......所以我不确定是否会自动调用它。