2015-09-02 1 views
2

Итак, я разрабатываю свой первый аддон firefox, и у меня есть простая панель, содержащая контент и ссылку. Когда я нажимаю на ссылку, ссылка открывается в самой панели. Я хочу иметь возможность открыть эту ссылку в вкладке или окне firefox. Я пробовал искать mozdev-документацию, но не нашел никакого решения.Как я могу создать ссылку в панели расширения Firefox, чтобы открыть ее в окне браузера/вкладке?

ответ

4

Вы можете добавить к вашим ссылкам атрибут target (как _blank, если вы хотите каждый раз открывать новую вкладку); или перехватите любые click, которые вы делаете в документе панели, а затем отправьте сообщение на ваш дополнительный код, чтобы открыть вкладку. Что-то вроде:

document.documentElement.addEventListener("click", event => { 
    let a = event.target.closest("a"); 

    if (a && a.href) { 
    // replace `self` with `addon` if it's a trusted document and 
    // it's not a `contentScriptFile` 
    self.port.emit("open-link", a.href); 
    } 
}); 

Тогда в вашем index.js или main.js, вы будете иметь что-то вроде:

const tabs = require("sdk/tabs"); 

let panel = Panel({ /* ... your panel ... */ }); 

panel.port.on("open-link", uri => tabs.open(uri)); 
+0

он говорит отсутствующего ";" перед статутом "let a = event.target.closest (" a ");". Я не уверен в правильном синтаксисе в этом фрагменте кода. – theLearner

+1

Вероятно, это зависит от того, какую версию javascript вы используете. Если вы находитесь в сценарии содержания, все должно быть хорошо. В противном случае 'let' не будет распознаваться, если вы не используете' type = 'text/javascript; version = 1.8'. В этом контексте вы также можете заменить 'let' на' var'. – ZER0

+1

спасибо, что это сработало! добавить команду 'event.preventDefault();', чтобы остановить ссылку в панели. – Stano

Смежные вопросы