我正在尝试使用使用chrome.declarativeContent
API定义的规则,在具有AMP版本的网页上制作活跃的Chrome扩展程序。我遇到的问题是AMP链接存储在head
中,因此CSS选择器PageStateMatcher
使用它们将无法找到它们。有没有办法使用此API访问head
元素,还是需要使用更复杂的内容?作为参考,这是我正在查看的documentation,这是我的代码:
chrome.runtime.onInstalled.addListener(function() {
chrome.declarativeContent.onPageChanged.removeRules(undefined, function () {
chrome.declarativeContent.onPageChanged.addRules([{
conditions: [
new chrome.declarativeContent.PageStateMatcher({
css: ["link[rel~='amphtml']"]
})
],
actions: [new chrome.declarativeContent.ShowPageAction()]
}]);
});
});
答案 0 :(得分:1)
根据评论中的答案,我通过在内容脚本中显式检查选择器,然后将其传递给后台脚本来解决这个问题,如下所示:
var ampurl = document.querySelector("link[rel~=amphtml]").getAttribute("href");
if (ampurl.length > 0) {
chrome.runtime.sendMessage({redirect: ampurl});
}