2016-12-06 9 views
0

ドメインのURL変更をリッスンするクロム拡張機能を使用していて、URLがパターンと一致するときにDOMにHTMLを追加します。Chrome拡張機能 - URLが変更されたときにページに追加する

私はそうmanifest.jsonを次のようになります。

{ 
    "name": "Append to DOM", 
    "description": "Testing", 
    "version": "1", 
    "manifest_version": 2, 
    "content_scripts": [ 
     { 
      "matches": [ 
       "http://www.somedomain.com/*" 
      ], 
      "js": [ 
       "content.js" 
      ] 
     } 
    ], 
    "permissions": ["tabs", "activeTab"] 
} 

とcontent.jsはそうのようになります。

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { 
    if (changeInfo.url == 'http://www.somedomain.com/matching-pattern') { 
     var myDiv = document.createElement("div"); 
     myDiv.innerHTML = 'SAMPLE HTML'; 
     document.body.appendChild(myDiv); 
    } 
}); 

しかし、リスナーが起動しない(とdiv要素が追加されていません) URLが更新されます。

何か助けていただければ幸いです。

+1

リスナーが発砲していないことは確かですか?そのURLがあなたのパターンと一致しないという問題はありませんか?ここでは完全なURLを使用しています。 httpsのように小さいものであれば、試合を破る可能性があります。 (おそらくRegExパターンが良いでしょう) – Andrew

+0

@Andrewそれは有効ですが、条件付き(つまりどのタブのURL変更でも)を取り出しても、divが追加されていないことがわかります。発射。 –

+0

'console.log(" test ")'などを使ってリスナーが起動しているかどうかを確認できますか? (divを追加できないように奇妙なことが起こっている場合にのみこれを示唆している) – Andrew

答えて

1

コンテンツのスクリプトは、あなたがコンテンツのスクリプトで常に働く最も安いソリューションをURLの変更を処理するために、バックグラウンドスクリプト

chrome.tabsを使用することができますchrome.tabs へのアクセス権を持っていない - 使用setInterval

var prevURL = ''; 
setInterval(function() { 
    if (document.location.href != prevURL) { 
     // do something 
     prevURL = document.location.href; 
    } 
}, 1000); 
関連する問題