Mat*_*Way 8 javascript youtube google-chrome-extension
我正在构建一个扩展(一些注入js),为youtube页面添加了一些按钮,工作正常.我的问题是,当用户点击另一个视频时(例如在右侧列表中),下载的视频将在没有实际页面重新加载的情况下加载.有没有办法检测到这个变化,以便我可以重新运行我的代码?
我已经尝试过绑定hashchange
事件这样的事情,但无济于事.
133*_*day 11
这个想法很简单:
background.js
用于监听网址更改为特定的YouTube标签chrome.tabs.onUpdated
后台页面也会侦听其他选项卡的URL更改,但我很确定您可以弄清楚如何解决这个问题.
的manifest.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/*"
]
}
Run Code Online (Sandbox Code Playgroud)
background.html
<script src="background.js"></script>
Run Code Online (Sandbox Code Playgroud)
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);
});
}
});
Run Code Online (Sandbox Code Playgroud)
app.js
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
//here we get the new
console.log("URL CHANGED: " + request.data.url);
});
Run Code Online (Sandbox Code Playgroud)
我知道这是一个旧线程,但我希望其他人能够使用此信息。
我在为 YouTube 构建 chrome 扩展时遇到了类似的问题。更具体地说,我需要检测 youtube 内的导航。
TL;博士;
在浏览了 StackOverflow 的大部分内容后,我在文件中添加了以下内容context.js
。
function run(){
// your youtube extention logic
console.log('change');
}
window.onload = run;
window.addEventListener('yt-navigate-start', run, true);
Run Code Online (Sandbox Code Playgroud)
说明
如果您希望查看所有可以运行的窗口事件getEventListeners(window)
。
youtube在换页时有一个服装事件,事件是yt-navigate-start
。
第一次加载 YouTube 时,我使用了 window.onload
,然后添加事件侦听器window.addEventListener('yt-navigate-start', run, true);
祝你好运,我希望这能有所帮助。
归档时间: |
|
查看次数: |
2896 次 |
最近记录: |