首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在铬扩展中匹配URL和片段标识符?

如何在铬扩展中匹配URL和片段标识符?
EN

Stack Overflow用户
提问于 2017-08-29 07:06:54
回答 1查看 720关注 0票数 3

我试图使用以下代码来区分vSphere登录页面和工作页面的URL。

vSphere登录页面的URL如下所示:

https://0.0.0.0/vsphere-client/?csp

登录后的工作页面如下所示:

https://0.0.0.0/vsphere-client/?csp#extensionId%3Dvsphere.core.controlcenter.shortcutsView

因此,我想在登录页面显示我的扩展图标,而不是在工作页面显示。

我尝试了以下代码,但是它没有工作,我的意思是图标在这两个URL上是可用的:

代码语言:javascript
复制
chrome.runtime.onInstalled.addListener(function () {
  chrome.declarativeContent.onPageChanged.removeRules(undefined, function () {
    chrome.declarativeContent.onPageChanged.addRules([
      {
        conditions: [
          new chrome.declarativeContent.PageStateMatcher({
            pageUrl: { querySuffix: 'csp' },
          })
        ],
        actions: [new chrome.declarativeContent.ShowPageAction()]
      }
    ]);
  });
});

关于这一行:

pageUrl: { querySuffix: 'csp' },

我还通过$尝试了到URL末尾的正则表达式,但没有工作:

pageUrl: { urlMatches: 'csp$' },

我知道片段标识符#后的部分不会在pageUrl: { xxx },中进行处理,请参考https://developer.chrome.com/extensions/events#property-UrlFilter-hostEquals

上面写着:

如果URL (没有片段标识符)匹配指定的正则表达式,则匹配。如果端口号与默认端口号匹配,则从URL中删除端口号。正则表达式使用RE2语法。

因此,也许pageUrl将登录页面和工作页面视为相同的URL。

这里有办法识别这两个网址吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-29 09:20:58

恐怕declarativeContent API根本无法满足您的要求。

您应该探索其他选项,例如注入一个内容脚本并从那里检查页面的状态;然后您可以给后台脚本消息以启用/禁用页面操作。

作为一种不同的方法,您可以处理API接口事件来跟踪URL更改并相应地更新页面操作可见性。

请注意,在这些状态之间的页面转换过程中,可能不会发生实际的导航(历史状态会发生更改);在这种情况下,您需要显式地隐藏页面操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45932792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档