1 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 20:00:38 ] オラ拡張作る。 XULはXMLベースのUI記述言語です。 Mozilla、Firefox、Thunderbird、Netscape等の Gecko系のソフトウェアために開発されました。 このスレはXUL、JavaScriptで利用できるXPCOM、 拡張の作り方などを主に話しあうスレです。 前スレ Mozillaでプログラミング(XUL) その2 pc8.2ch.net/test/read.cgi/tech/1102172958/ 姉妹スレ Geckoベースのブラウザを作ろう pc5.2ch.net/test/read.cgi/tech/1023546699/l50 参考サイト Mozilla Developer Center developer.mozilla.org/ XULPlanet www.xulplanet.com/ 過去スレ Mozillaでプログラミング(XUL) pc5.2ch.net/test/read.cgi/tech/1019704370/ >>2-50 あたりに関連リンク、近況などがあるかも。
442 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 00:06:38 ] <window onload="init();" onunload="uninit();"> <script type="application/x-javascript" src="progress.js"/> </window> で、progress.jsに function init() { top.gBrowser.addProgressListener(〜 って書けばいいと思うんだが。
443 名前:432 [2010/02/11(木) 00:37:03 ] >>442 試してみました、しかしどうも動いてくれません。 ちなみにサイドバーのスクリプト内で document.getElementById("sidebar").contentDocument.getElementById("myControl").setAttribute("attributeName", "value"); を動かしてみたところ、コントロールの要素の値は変更されていませんでした。
444 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 01:07:47 ] いやいやいや、そりゃサイドバーのスクリプトから見たら document.getElementById("sidebar").contentDocument が存在するわけないでしょ。もうすこし冷静になって考えようよ。 あと、「動かない」だけじゃなくて、どこまで出来てて、どこから出来ないのか、 どこで詰まっててどういうエラーが出るのか、ちゃんと自分で把握して説明しないと、 エスパーでもないかぎりアドバイスしようがないよ。
445 名前:432 [2010/02/11(木) 03:10:22 ] 申し訳ありません、確かにその通りでした。 ところで急展開申し訳ないのですが、 現在期待した動き(ロケーションが変わったときにサイドバーのコントロールの要素が変更される) が動きました。 どうやらaddEventListenerをしていなかったのが原因だったようです。
446 名前:432 [2010/02/11(木) 03:14:07 ] JavaScriptのソースは以下のとおりです (locationchange.js) const STATE_START = Components.interfaces.nsIWebProgressListener.STATE_START; const STATE_STOP = Components.interfaces.nsIWebProgressListener.STATE_STOP; var bgipeo_Listener = { QueryInterface: function(aIID){ if (aIID.equals(Components.interfaces.nsIWebProgressListener) || aIID.equals(Components.interfaces.nsISupportsWeakReference) || aIID.equals(Components.interfaces.nsISupports)) return this; throw Components.results.NS_NOINTERFACE; }, onStateChange: function(aWebProgress, aRequest, aFlag, aStatus){ if(aFlag & STATE_START){} if(aFlag & STATE_STOP){} return 0; }, onLocationChange: function(aProgress, aRequest, aURI){ document.getElementById(コントロール名).setAttribute(要素名, value); return 0; },
447 名前:432 [2010/02/11(木) 03:15:04 ] 続き onProgressChange: function() {return 0;}, onStatusChange: function() {return 0;}, onSecurityChange: function() {return 0;}, onLinkIconAvailable: function() {return 0;} } function init(){ top.gBrowser.addProgressListener(bgipeo_Listener, Components.interfaces.nsIWebProgress.NOTIFY_STATE_DOCUMENT); } function uninit(){ top.gBrowser.removeProgressListener(bgipeo_Listener); } var myExtension = { init: function() { top.gBrowser.addProgressListener(Listener, Components.interfaces.nsIWebProgress.NOTIFY_STATE_DOCUMENT); }, uninit: function() { top.gBrowser.removeProgressListener(Listener); } }; window.addEventListener("load", function() {myExtension.init()}, false); window.addEventListener("unload", function() {myExtension.uninit()}, false); サイドバー <window onload="bgipeo_init();" onunload="bgipeo_uninit();"> <script type="application/x-javascript" src="locationchange.js" /> </window>
448 名前:432 [2010/02/11(木) 03:20:43 ] 親切にお答えいただき誠にありがとうございました。 また大量の投稿大変申し訳ありませんでした。 次からは皆様のお役に立てればと思います。 では失礼いたします。