2011-06-21 10 views
0

1時間にN回以上アクセスされたURLの(構成可能な)リストへのアクセスをブロックする拡張機能を作成しようとしています。私が理解しているように、スタートスクリプトがグローバルHTMLページ(URLのリストを取得するために設定オブジェクトにアクセスできる人)に「これをロードすべきですか?」というメッセージを渡す必要があります。読み込みを拒否/許可するための開始スクリプトにメッセージを返します。サファリエクステンションのURL(アドレスバーから)に基づいてブロックする方法

これはうまく動作しますが、通常のbeforeLoad/canLoadハンドラを使用すると、ロードする必要があるすべてのサブアイテム(画像など)のメッセージが表示されます。これは#accesses /私が作ろうとしている時間制限。

2つのサンドボックス間でメッセージを同期して渡す方法があるので、グローバルHTMLページに「このリクエストが来たときのウィンドウバーとタイムスタンプのURL」を伝えることができます重複要求を制限できますか?

ありがとうございます!

答えて

0

beforeLoadハンドラと同じメッセージを使用するのではなく、ページの読み込みを許可するかどうかをチェックする関数に対して、別のメッセージを使用できます。例えば、(スクリプトを「開始」でなければなりません)注射したスクリプトに入れ:

safari.self.tab.dispatchMessage('pageIsLoading'); 

とグローバルスクリプトで:

function handleMessage(event) { 
    if (event.name == 'pageIsLoading') { 
     if (event.target.url.indexOf('forbidden.site.com') > -1) { 
      console.log(event.timeStamp); 
      event.target.url = 'about:blank'; 
     } 
    } 
} 
関連する問題