1

我正在为Mozilla Firefox和Google Chrome开发浏览器扩展。该扩展提供了Oracle APEX的功能。由于is只能在运行Oracle APEX的页面上运行,因此我在子目录和参数中标识具有匹配模式的页面。这是很容易为Chrome,我加入这个我的manifest.jsonFirefox扩展util/match-pattern子目录

"content_scripts": [{ 
    "matches": ["*://*/*f?p=*", "*://*/*wwv_flow.accept*"], 
    "js": ["content_script.js"], 
    "run_at": "document_end" 
}] 

但是,如果我尝试同样在Firefox与在main.js的PageMod API我不能让任何比赛,我尝试不同的组合:

main.js

pageMod.PageMod({ 
      include: ["*://*/*f?p=*", "*://*/*wwv_flow.accept*"], 
      contentScriptFile: data.url("content_script.js"), 
      contentScriptWhen: "end", 

现在我正在运行在Firefox中content_script上的任何页面和检查使用JavaScript匹配功能的URL,如果没有匹配我立即返回

content_script.js

var url = unsafeWindow.location.href; 
    if (url.match(new RegExp("f?p=")) || url.match(new RegExp("wwv_flow.accept"))) 

我的问题是,是否有可能获得的PageMOD​​ API匹配模式或如果有其他解决方案,那么我的内容脚本将无法在任何页面上运行?

+0

无论出于何种原因,SDK匹配图案仅支持[单个通配符(星号)](https://github.com/mozilla/addon-sdk/blob/48e3fe484f9f0d3178cb827fd7c64ccf88700cb0/lib/sdk/util /match-pattern.js#L37)。使用@abraham回答中的正则表达式。 – nmaier

回答

2

match pattern支持正则表达式,所以这样的事情应该工作。您可能需要稍微练习一下确切的语法。

["/.*f\?p\=.*/*", "/.*wwv_flow\.accept.*/"]