Firefox附加组件:页面mod包含模式不匹配

时间:2014-02-05 03:30:20

标签: firefox-addon pattern-matching firefox-addon-sdk

我正在尝试为Spotify(和其他人)添加全局热键支持。为此,我必须在播放器应用程序iframe中执行内容脚本,但无论我尝试使用什么模式,Firefox都不会执行我的内容脚本。

这是我尝试做的事情:

var data = require("sdk/self").data;
var pageMod = require("sdk/page-mod");

pageMod.PageMod({
    include: /^https?:\/\/play\.spotify\.com\/apps\/player\/.+/,
    attachTo: ["frame"],
    contentScriptFile: [data.url("content.js")]
});

有谁知道什么可能是错的?我怎样才能让它匹配?

请参阅: https://bitbucket.org/panzi/play-control/src/f1dbd217661c0f09d3615dce7b8b1cab9f8fbf70/browser-plugin/firefox/playcontrol-spotify/lib/main.js?at=default

Chrome的相同功能非常出色: https://bitbucket.org/panzi/play-control/src/f1dbd217661c0f09d3615dce7b8b1cab9f8fbf70/browser-plugin/chrome/playcontrol-spotify/?at=default

2 个答案:

答案 0 :(得分:1)

我是正则表达式noob,但在doc examples中,即使字符串以' http'开头,他们也不会使用^

尝试逐步更严格地查看它不相关的正则表达式的哪个部分。在那里扔onAttach: console.log("pageMod attached"),以确保它没有被附着,而其他东西不会导致问题。

/.*play\.spotify\.com\/apps\/player.*/如果这样可行,那么要么它不喜欢开头还是结尾。尝试:

  • /https?:\/\/play\.spotify\.com\/apps\/player.*/
  • /^https?:\/\/play\.spotify\.com\/apps\/player.*/
  • .*play\.spotify\.com\/apps\/player\/.*/
  • .*play\.spotify\.com\/apps\/player\/.+/

如果以上所有方法都有效,那么你的字符串也可以正常工作。

答案 1 :(得分:0)

网址匹配按照我编写的方式工作。这个错误是别的。