$(文档).ready()并不总是在Content Script for Chrome Extension中触发

时间:2015-04-23 07:35:12

标签: javascript jquery google-chrome-extension

我正在制作与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>

1 个答案:

答案 0 :(得分:-1)

您必须使用Jquery .on()方法来绑定事件。