2017-07-05 22 views
-1

Chromebookの拡張機能を使用して、特定のページにアクセスするのをやめさせようとしています。アイデアは、私がFacebookにアクセスするときに拡張ブロックを持つことですが、それでも私はFacebookに行くのを続けるオプションがあります。Chrome拡張機能のローカルページからURLに移動

今、私はちょうどそれをブロックするためにバックグラウンドスクリプトを使用しています。

chrome.webNavigation.onBeforeNavigate.addListener(function(e) {  
    chrome.tabs.query({currentWindow: true, active: true}, function (tab) { 
    chrome.tabs.update(tab.id, {url: 'waster.html'}); 
    }); 
    }, {url: [{hostSuffix: 'facebook.com'}]} 
); 

waster.htmlには、Facebookに行くリンクがあります。ただし、そのリンクをクリックすると、同じイベントが再度トリガーされ、ブロックされます。

これを回避する方法はありますか?ブロッキングを避けるために、リンクを介してパラメータを渡すようにしますか?

おかげ

== 編集: 目的はfacebook.comをブロックすることで、より詳細

を追加しますので、私は停止し、フィルタに「facebook.com」とonBeforeNavigateにイベントリスナを追加しましたページをロードする前に、自分のページをロードするwaster.html。 しかし、waster.htmlには、ユーザーがFacebookに行くことを許可するリンクがあります。

ここから問題が発生します。リンクをクリックすると、イベントが再びトリガーされ、よくブロックされます。

+1

'chrome.tabs.update'の前に、現在のタブURL' if(tab.url!= chrome.runtime.getURL( 'waster.html'))を確認してください。 – wOxxOm

+0

私はちょうどそれを試してみました。仕事はありません。問題は、これらのコードはすべて、Facebookにナビゲートするイベントが発生するとすぐに実行されるため、tab [0] .urlは常に "http://facebook.com"です。 –

+0

@wOxxOmをフォローアップしてくれてありがとう。 tab.urlは未定義です。それは配列です。 –

答えて

1

私は少し周りを台無しにし、私は完全になぜまだ

chrome.webNavigation.onBeforeNavigate.addListener(function(e) {  
    var url = new URL(e.url); 
    if (url.hostname == 'facebook.com') { 
     chrome.tabs.update(e.tabId, {url: 'waster.html'}); 
    } 
    }, {url: [{hostSuffix: 'facebook.com'}]} 
); 

そしてwaster.htmlで理解していないのに、それが動作するようになりました、ではなく<a>と通常のリンクの、私は次のJSを使用する必要があります。

$("#slack-time").click(function(e){ 
    e.preventDefault(); 
    chrome.tabs.query({currentWindow: true, active: true}, function (tab) { 
       chrome.tabs.update(tab.id, {url: 'http://www.facebook.com'}); 
     }); 
}) 
+0

'chrome.tabs.update'が特定のナビゲーションを実行し、webNavigation.onCommittedだけが発行され、onBeforeNavigateは発行されないため、動作すると思います。ところで、chrome.tabs.queryの代わりにchrome.tabs.getCurrentを使用することができます。 – wOxxOm

+0

Yeapはそれをそれに更新します。助けてくれてありがとう@wOxxOm –

関連する問題