Chrome扩展程序正确地获取当前URL和标题,Youtube除外



我进行此扩展是为了将来将当前页面参数传递到另一个脚本上。使用chrome.tabs.getSelected,我可以检索我导航到的几乎任何页面的url和标题……除了Youtube。出于某种原因,警报框显示当前URL,但显示上一个标题。

我曾试图推迟检索标题,但这也产生了其他问题,如多个警报或";未定义的";价值观

background.js

chrome.webNavigation.onHistoryStateUpdated.addListener(function(details) {
chrome.tabs.getSelected(null,function(tab) { // null defaults to current window
if(typeof chrome._LAST_RUN === 'undefined' || notRunWithinTheLastSecond(details.timeStamp)){
// Fires only when details.url === currentTab.url
chrome._LAST_RUN = details.timeStamp;
var myurl = tab.url;
var mytitle = tab.title;
zurl = myurl + "rn" + "rn" + mytitle;
alert(zurl);
}
});
});
const notRunWithinTheLastSecond = (dt) => {
const diff = dt - chrome._LAST_RUN
if (diff < 2000){
return false
} else {
return true
}
}

manifest.json

"permissions"       : [ 
"tabs",
"webNavigation"
]

Youtube喜欢动态加载后续页面(获取JSON对象并在客户端进行解析(,并且很晚才设置标题。

如果覆盖document.title属性,情况会变得更糟

let actualTitle = document.title;
Object.defineProperty(document, 'title', {
set: function (newValue) {
console.log(newValue);
actualTitle = newValue;
},
get: function () {
return actualTitle;
}
});

你会注意到Youtube喜欢在加载任何页面时将标题设置为无意义的值("Youtube"、"Youtube"或原始URL(,这会导致Chrome历史记录随机无法记住一些Youtube链接标题https://www.reddit.com/r/youtube/comments/7e5j3f/youtube_video_titles_not_appearing_anymore_in/

当你第一次打开YouTube时,Chrome历史记录链接只会显示";YouTube";。您在该选项卡中单击的任何视频都将在Chrome历史记录链接中显示视频标题。如果你在新的选项卡或窗口中从该选项卡打开视频,它不会在Chrome历史记录链接中显示视频标题。

如果你想在Chrome历史记录链接中显示该视频的标题,你必须在刚打开的新窗口或选项卡中搜索该视频,然后单击其链接。然后视频标题将显示在Chrome历史记录链接中。

我甚至可以冒险假设谷歌这样做是一种黑暗模式,迫使用户打开Youtube历史记录跟踪。当随机数目的条目保存在";Youtube";标题:/

您可能不得不采取拦截标题更改并忽略";YouTube"";,或原始URL。

最新更新