[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/09 12:52 / Filesize : 126 KB / Number-of Response : 449
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Mozillaでプログラミング(XUL) その3



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 ]
親切にお答えいただき誠にありがとうございました。
また大量の投稿大変申し訳ありませんでした。
次からは皆様のお役に立てればと思います。
では失礼いたします。







[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<126KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef