1

我试图使用下面的代码来区分vSphere登录页面的URL和工作页面。如何在Chrome扩展中匹配URL和片段标识符?

的vSphere登录页面的URL看起来是这样的:

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

与工作页面登录看起来像这样经过:

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

所以,我想显示我的扩展图标在登录页面,不在工作页面显示。

我试着下面的代码,但它没有工作,我的意思是图标可以用以下两个网址:

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。

有什么方法可以在这里识别这两个网址吗?

谢谢!

回答

0

恐怕declarativeContent API根本无法做你想问的问题。

您应该探索其他选项,例如注入content script并从那里检查页面的状态;然后您可以向您的后台脚本发送消息来启用/禁用页面操作。

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

请注意,由于页面在这些状态之间转换(反而发生历史状态更改),因此可能没有实际的导航发生。在这种情况下,您需要显式隐藏您的页面操作。

相关问题