javascript - 使用注入(inject)的 javascript 检测 Youtube 视频变化

标签 javascript google-chrome-extension youtube

我正在构建一个扩展(一些注入(inject)的 js),它将一些按钮添加到 youtube 页面,效果很好。我的问题是,当用户点击另一个视频(比如在右侧列表中)时,下一个视频会在没有实际页面重新加载的情况下加载。有什么方法可以检测到此更改以便我可以重新运行我的代码吗?

我已经尝试过绑定(bind)到 hashchange 事件,但无济于事。

最佳答案

这个想法很简单:

  • 使用 background.js 使用 chrome.tabs.onUpdated 监听特定 youtube 标签页的 url 变化
  • 一旦检测到选项卡更改,将新 URL 发送到该选项卡中运行的内容脚本

后台页面也会监听 其他 标签的 URL 更改,但我很确定您能找到解决方法。

ma​​nifest.json

{
    "manifest_version": 2,
    "name": "Tab url change detection",
    "version": "1.0",
    "background": {
        "persistent":true,
        "page":"bg.html"
    },
    "content_scripts": [{
            "matches": ["http://www.youtube.com/*"],
            "js": ["app.js"]
        }
    ],
    "permissions": [
        "tabs",
        "http://www.youtube.com/*"
    ]
}

background.html

<script src="background.js"></script>

background.js

//Listen for when a Tab changes state
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){
    if(changeInfo && changeInfo.status == "complete"){
        console.log("Tab updated: " + tab.url);

        chrome.tabs.sendMessage(tabId, {data: tab}, function(response) {
            console.log(response);
        });

    }
});

app.js

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
    //here we get the new 
    console.log("URL CHANGED: " + request.data.url);
});

关于javascript - 使用注入(inject)的 javascript 检测 Youtube 视频变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21657319/

相关文章:

Javascript:架构资源管理器 Chrome 扩展循环需要忽略不相关的嵌套元素

javascript - YouTube 滚动显示

api - 如何使用YouTube API V3获取视频上传日期?

javascript - 如何在 asp .net MVC 中调试 javascript?

javascript - 如何在不创建新条目的情况下将值插入子数组

javascript - ACE 编辑器自动完成 - 自定义字符串

javascript - 为什么会保存sendMessage的内容以及如何禁用它?

javascript - 如何停止 chrome 扩展程序?

twitter-bootstrap - 具有Bootstrap Modal问题的YouTube视频

javascript - 有谁知道带分页的动态表的 js 库吗?