1

我创建了一个 chrome 扩展,它在单击其按钮后执行某些操作。但是我不希望它被滥用,所以我需要在一段时间后执行它的代码。

为了实现这一点,我怎样才能用超时包围这段代码?

谢谢你读我!

chrome.tabs.getSelected(null,function(tab) {
var Mp=tab.url.substring(0,23);
if(Mp=='https://www.example.com')
{
onWindowLoad();

chrome.extension.onMessage.addListener(function(request, sender) {
    if (request.action == "getSource")
    {
    ...Working here
    }
});
}
else
{
message.innerHTML='<span style="color: #f00">This is not a valid page</span>';
}
});

function onWindowLoad()
{
var message = document.querySelector('#message');
chrome.tabs.executeScript(null, {file: "getPagesSource.js"});
}
4

1 回答 1

0

我不得不做出妥协,所以在 getSelected 之后我添加了以下行:

chrome.browserAction.disable(tab.Id);

它禁用了操作按钮,因此在脚本将数据发送到服务器时无法单击它,就像使用此扩展程序一样,我抓取标签 URL 以便将其存储在我的数据库中。在ajax响应并添加以下内容之后

if(xhr.readyState==4)
{
message.innerHTML=xhr.responseText;
chrome.browserAction.enable(tab.Id); /////<---THAT LINE
}

该按钮再次准备好被点击。

我找不到在几秒钟内添加特定延迟的方法,这种方法看起来很愚蠢,但它可以工作,因为来自我的服务器的响应延迟足以切换操作按钮的 2 种状态。

然而,有了这个,另一个问题出现了,我将在不同的问题中写出来。

于 2012-12-30T03:10:12.817 回答