2011-06-05 59 views
0

我想要实现的是在后台运行一个Chrome扩展,每分钟重定向到google.com,然后一分钟后重定向到stackoverflow.com等等。该图标被大多数扩展所在的扳手图标点击。Chrome扩展定时重定向

但是,我只知道如何重定向一个页面使用 window.location.replace(“http://google.com”);

我仍在学习如何开发chrome扩展,以及为学习过程制作一些简单的东西。我开始从this教程中学习,并尝试了几件事情,现在我想弄清楚如何让它像后台运行一样。

+0

你想重定向哪个选项卡或页面? – brymck 2011-06-05 18:02:40

+0

没有页面,只是一个学习过程。我抓住了一个随机的网址(http://stackoverflow.com/questions/6166121/drupal-android-app-login-persistence) – 2011-06-05 18:15:43

回答

1

您也可以编写一个您要注入的内容脚本,但很容易,我只是将它存储在一个变量中。我建议您查看chrome.tab API,因为Google在为开发人员记录API方面做得非常好。

在你的背景页:

var REDIRECTION_SCRIPT_A = "window.location.href='http://www.google.com'"; 
var REDIRECTION_SCRIPT_B = "window.location.href='http://bit.ly/m2TXqC'"; 
var toGoogle = true; 
var intervalId; 

chrome.browserAction.onClicked.addListener(function() { 
    clearInterval(intervalId); 
}); 

// Execute redirection script on current page 
// Note that you can select any tab based on its ID by replacing 
// null below 
function annoyUser() { 
    console.log("test"); 
    chrome.tabs.executeScript(null, {code: 
    (toGoogle ? REDIRECTION_SCRIPT_A : REDIRECTION_SCRIPT_B) }); 
    toGoogle = !toGoogle; 
} 

// Do once a minute ad infinitum 
intervalId = setInterval(annoyUser, 5000); 

在你的manifest.json:

{ 
    ... 
    "permissions": ["http://*/*", "tabs"], 
    ... 
} 
+0

哦,我现在明白了。谢谢!关于Chrome扩展,他们未来会有更多的问题。 – 2011-06-06 00:36:11

5

替代的解决方案(我离开网址选择部分出)。

background.html:

var timer = setInterval(function() { 
    chrome.tabs.getSelected(null, function(tab) { 
     chrome.tabs.update(tab.id, {url: "http://google.com"}); 
    }); 
}, 60000); 

//stop 
chrome.browserAction.onClicked.addListener(function(){ 
    clearInterval(timer); 
}); 
+0

+1不知道为什么我错过了'chrome.tabs.update' – brymck 2011-06-05 18:49:17