我正在制作与YouTube.com加载的网页互动的Chrome扩展程序。我想在页面上将相关视频从最大到最小重新排序,但我的内容脚本必须先与后台页面交谈才能获得一些信息。我的内容脚本通过以下事件开始排序:
content_script.js:
$(document).ready(function() {
chrome.runtime.sendMessage({message: "getRecentSortType"}, function(response) {
PerformSortAction(response.sortType);
});
});
background.js脚本侦听并根据请求执行代码:
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if(request.message === "getRecentSortType")
{
var recentSortType = localStorage.getItem("sortType");
if(recentSortType === null)
{
recentSortType = "sortByViews";
}
sendResponse({"sortType": recentSortType});
}
});
当我重新加载我正在使用的页面时运行它,所有这一切都正常。但是,当我在YouTube中点击相关视频时,$(文档).ready()事件不会在内容脚本中被触发。如果我再次刷新该页面,那么它可以工作。
有人可以向我解释发生了什么事吗?我真的更希望在内容脚本中有一些事件,以便在页面加载完成时。
现在我使用chrome.tabs.onUpdated事件监听我的background.js脚本,然后向我的内容脚本发送消息,但每次加载时onUpdated事件多次发生,搞乱了消息。< / p>
答案 0 :(得分:-1)
您必须使用Jquery .on()方法来绑定事件。