1

我创建了一个 chrome 扩展,它使用 youtube api 来浏览评论和抓取链接。然后,我使用 chrome 扩展内容脚本将结果插入到每个 youtube 视频页面,并将链接转换为可点击。

我的问题是 jquery document.ready 只有在上一页不是视频页面 watch/v= 或页面刷新时才会触发。

换句话说,通过 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”没有帮助,最简单的方法是轮询页面以找到您需要的代码块,然后启动您需要的行为。

内容脚本.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();

背景.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 回答