2014-12-19 3 views
1

Я разрабатываю аддон для firefox с использованием метода addon-SDK. Я хотел бы знать, есть ли в любом случае изменить html (contentURL), отображаемый на этой панели, на новую веб-страницу, щелкнув ссылку в этом contentURL. Заранее спасибо.Показать новую html/страницу в панели

+0

Вам может понадобиться посетить [спросить] для предложений о том, как улучшите свой вопрос и избегайте проседания. – ochi

+0

@Ochi хороший вопрос. Виньке да есть способ. Я сделал это давно, но я вышел из цикла sdk, поэтому может быть рекомендован способ, с помощью которого некоторые разработчики sdk могут поделиться с вами. – Noitidart

+1

возможно, это может помочь ответить на ваш вопрос: http://stackoverflow.com/questions/16073930/how-do-i-display-a-link-in-a-panel-on-my-firefox-extension-using-the -add-on-sdk – ochi

ответ

1

Вигнеш вот код, который получает URL щелкнули:

https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/panel#Scripting_panel_content

var myScript = "window.addEventListener('click', function(event) {" + 
       " var t = event.target;" + 
       " if (t.nodeName == 'A')" + 
       " self.port.emit('click-link', t.toString());" + 
       "}, false);" 

var panel = require("sdk/panel").Panel({ 
    contentURL: "http://www.bbc.co.uk/mobile/index.html", 
    contentScript: myScript 
}); 

panel.port.on("click-link", function(url) { 
    console.log(url); 
}); 

panel.show(); 

Итак вы можете изменить это, чтобы быть вместо console.log (URL), вы можете сделать это найти вашу панель и изменяет местоположение своего iframes на этот URL-адрес. Я не уверен, как это сделать с помощью методов sdk, может быть, кто-то еще может поделиться. Я хотел бы попробовать сделать это, хотя:

panel.port.on("click-link", function(url) { 
    panel.contentURL = url; 
}); 

редактировать: panel.contentURL = url может не работать, так что вы должны сделать это следующим образом:

const { getMostRecentBrowserWindow } = require('sdk/window/utils'); 
var aXULBrowser = getMostRecentBrowserWindow(); 
aXULBrowser.getElementById('ID OF YOUR PANEL, probably same as id to your widget here').getElementsByTagName('iframe').contentWindow.location = url; 
+0

@Vignesh if 'panel.contentURL = url' не работает, тогда вы можете делать то, что я добавил выше. Если вы не можете определить идентификатор вашей панели, используйте DOM Insepctor и Elment Inspector, затем сдвиньте + щелкните правой кнопкой мыши на своей панели, и он откроет ее в инспекторе, после чего вы сможете легко увидеть идентификатор панели. – Noitidart

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