1

YouTube API を使用してコメントをトロールし、リンクを取得する chrome 拡張機能を作成しました。次に、Chrome 拡張機能のコンテンツ スクリプトを使用して、結果を各 YouTube ビデオ ページに挿入し、リンクをクリックできるように変換します。

私の問題は、前のページがビデオページではない限り、jquery document.ready が起動していることです。

言い換えれば、YouTube 自身のリンクを介してあるウォッチ ページから別のウォッチ ページをクリックしても、document.ready は起動しません。

これは、YouTube が再生ページをロードする方法と関係があるようです。"?v=" パラメータのみが変更されており、YouTube はページをリロードするのではなく、すべてのコンテンツを動的にロードすると推測しています。

使用できる document.ready の代替手段はありますか?

$(document).ready(function() {

 app.insertLinksInit();

 });

window.location.href の変更をリッスンする方法があるかどうかを考えていましたが、私が読んだことから、これにはイベントが関連付けられていないようです。URL のパラメーターが変更されたことを知るために、他にどのようなイベントをリッスンできますか? jquery-2.0.3.min を使用しています。

4

1 に答える 1

0

「onready」が役に立たない場合、最も簡単な方法は、ページをポーリングして必要なコードのチャックを見つけ、必要な動作を開始することです。

content-script.js

var regex = /\<a\s\w+/; //finds <a tags (for example) 

function polling(){
  if (regex.test(document.querySelector('#closest-id').innerHTML)) {
    // The regular expression produced a match, so notify the background page.
    chrome.extension.sendRequest({}, function(response) {});
  } else {
    //nothing found test again, delay it as long as possible
    setTimeout(polling,1000);
  }
}
polling();

background.js

function onRequest(request, sender, sendResponse) {
   // your actions here
};

// Listen for the content script to send a message to the background page.
chrome.extension.onRequest.addListener(onRequest);
于 2013-09-24T09:20:35.463 に答える