0

自分用の拡張機能用のブラウザを構築しようとしています。プラグインのアイコンをクリックすると、ページが開きます。新しいページの読み込みが完了した後にコードを実行したいが、何とか動作しない。chrome.webNavigation.on完了前に完了しましたか?

chrome.webNavigation.onCompleted.addListener(function(details) { 
    // if (check for correct URL here) { 
     var videos = document.getElementsByTagName("video"); 
     var video = videos[0]; 
     alert(videos.length); <--- always Zero! Why?? 
     video.load(); 
     video.play(); 

     video.addEventListener("ended", function() { ... }); 
    // } 
}); 

を彼らは同じ背景スクリプトの両方であると私はコンテンツスクリプトを持っていない:

var result; 

chrome.browserAction.onClicked.addListener(function() { 
    chrome.history.search(
     { text: "", maxResults: 100}, //object 
     function(results) { //callback 
      for(var item in results) { 
       var currItem = results[item]; 
       if (currItem.url.indexOf("some_domain") > -1) { 
        result = results[item]; 
        break; 
       } 
      } 

      //Go to website 
      chrome.tabs.create({ 
       'url': result.url 
      }, function(tab) { 
       new_tabId = tab.id; 
      }); 
     } 
    ); 
}); 

今ここで失敗した部分です。私は、デベロッパーコンソールで確認し、実行すると、マニフェストで 権限は"tabs", "history", "webNavigation"

です: 私は正しい番号を入手できますか。

+0

どのブラウザとバージョンでテストしていますか? – Makyen

+0

@Makyen Opera - Version:39.0.2256.48 – Gandora

+2

少なくとも、[拡張機能の概要](https://developer.chrome.com/extensions/overview#arch)を一目で確認してください。コンテンツスクリプトウェブページDOMにアクセスするために必要です。 – wOxxOm

答えて

1

wOxxOmで暗示されているように、コードが動作しないようにするには、background scriptからDOMにアクセスしようとしています。具体的には、コード:

var videos = document.getElementsByTagName("video"); 
var video = videos[0]; 
alert(videos.length); <--- always Zero! Why?? 
video.load(); 
video.play(); 

video.addEventListener("ended", function() { ... }); 

はバックグラウンドスクリプトでは機能しません。これを行うには、コンテンツスクリプトをロード/実行する必要があります。

+0

スタックにソリューションを提供して砦を握ってくれてありがとう@Maykenに感謝します。本当にありがとう! :) – Noitidart

+0

おかげさまで、特に@wOxxOmにも感謝します - 私はこの答えを受け入れます(私は多くの選択肢があります:p)。私は本当にそれをコンテンツスクリプトで動作させることができました。もう一度おねがいします、助けは非常に高く評価されています:) – Gandora

+1

@ガンドラ、私は助けることができてうれしいです。 wOxxOmはクレジットを獲得する権利があります。最初です。私のコメント?再。ブラウザ&ver。 FF48では、 'tabs.create()'は、実際にタブの前にコールバックを呼び出していましたが、私の最近の[answer?](http://stackoverflow.com/a/38910610/3773011) (そして 'tabs.onCreated'などのイベントはあまりにも早く発砲します)。それで、私の?再。ブラウザ&ver。あなたの?のタイトルだけに基づいて。実際にコードとテキストを読み取った後で、バックグラウンドスクリプトでDOMにアクセスしようとすると明らかに問題(wOxxOmのコメントの後の秒数)がわかりました。 – Makyen

関連する問題