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