1

ボタンがクリックされた後に何かを行うクロム拡張機能を作成しました。ただし、悪用されたくないので、しばらくしてからコードを実行する必要があります。

これを実現するために、このコードをタイムアウトで囲むにはどうすればよいですか?

私を読んでくれてありがとう!

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 に答える