2016-03-19 3 views
1

Когда я использую следующий кодFirefox дополнения шаблон SDK соответствия не работает

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

pageMod.PageMod({ 
    include: "http://www.page.com/user/*", 
    contentScript: 'window.alert("user");' 
}); 

я получаю предупреждение. Но я хочу заменить «http://www». поэтому я попробовал:

*://*.page.com/user/* 
*://page.com/user/* 
*.page.com/user/* 

и никто из них не работает для меня. Примеры из developer.mozilla.org показывают, что по крайней мере один из них должен работать. Что не так с ними?

ответ

2

Я столкнулся с этой проблемой в прошлом, вы не можете использовать более 1 * (подстановочный знак) в шаблоне.

У вас есть 2 варианта

  • Используйте массив веб-сайтов, то есть ["http://www.page.com/user/*", "https://www.page.com/user/*"]
  • Используйте RegEx (Regular Expression)

Вот как вы можете использовать регулярные выражения для получить то, что вы хотели, когда вы пробовали *://*.page.com/user/*

Используйте следующие RegEx: .+:\/\/(.+\.)?page\.com\/user\/.*

Вот как это работает (если вы не знаете RegEx, я хотел бы предложить его изучение):

.+   # Any character 1+ times - Selects the Protocol (http, https, ftp) 
:\/\/  # :// After Protocol (/ have to be escaped using \/) 
(.+\.)?  # (Optional) Letters followed by a . (dot) - (www.) 
page  # Website Name - (page) 
\.com  # .com - (Top-Level Domain) 
\/user\/ # Folder /user/ (/ have to be escaped using \/) 
.*   # Any character 0 or more times - (Any folders/files after the /user/ folder) 

Вот хороший сайт, чтобы узнать RegEx, если вы этого не сделаете уже знаю их: RegexOne

Итак, ваше полное include будет:

include: /.+:\/\/(.+\.)?page\.com\/user\/.*/, 

Примечание чем в JavaScript можно определить регулярное выражение по esclosing его в / s

Вот Live Demo из RegEx работает

+0

Это идеальный ответ. Большое спасибо. – blaballong

+0

Нет проблем! У меня была эта проблема, и я пытался понять ее целую вечность, пока не узнал, что вы не можете использовать несколько подстановочных знаков. Я не понимал, что могу использовать RegEx (не так, чтобы я знал, как использовать его в любом случае), поэтому я получил длинный массив, включающий 'http',' https', с или без 'www' для каждого из них, а затем Мне пришлось удвоить все это для '.com' и' .co.uk'! – Druzion