我创建了一个chrome扩展程序,它使用youtube api来浏览评论和抓取链接。然后,我使用chrome扩展内容脚本将结果插入到每个YouTube视频页面,并将链接转换为可点击。
我的问题是,jquery document.ready只有在页面刷新时上一页不是视频页面监视/ v = OR时才会触发。
换句话说,通过youtubes自己的链接从一个观看页面到另一个观看页面点击不会导致document.ready触发。
这似乎与youtube现在加载观看页面的方式有关。只有“?v =”参数正在改变,我猜youtube会动态加载所有内容,而不是重新加载页面。
我可以使用document.ready吗?
$(document).ready(function() {
app.insertLinksInit();
});
我在想是否有办法在window.location.href上听取更改但是根据我所读到的内容似乎没有附加事件。我可以听到哪些其他事件知道网址中的参数已更改?我使用的是jquery-2.0.3.min。
答案 0 :(得分:0)
如果'onready'没有帮助,最简单的方法是轮询页面以找到您需要的代码,然后启动您需要的行为。
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();
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);