从chrome.declarativeContent访问头元素

时间:2018-05-01 02:01:20

标签: javascript google-chrome-extension

我正在尝试使用使用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()]
    }]);
  });
});

1 个答案:

答案 0 :(得分:1)

根据评论中的答案,我通过在内容脚本中显式检查选择器,然后将其传递给后台脚本来解决这个问题,如下所示:

var ampurl = document.querySelector("link[rel~=amphtml]").getAttribute("href");
if (ampurl.length > 0) {
  chrome.runtime.sendMessage({redirect: ampurl});
}