Mozillaでプログラミング(XUL) その2
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG前スレ
Mozillaでプログラミング(XUL)
http://pc5.2ch.net/test/read.cgi/tech/1019704370/
0052デフォルトの名無しさん
NGNGだめ。GUID Generator を使おう。
http://extensions.roachfiend.com/cgi-bin/guid.pl
0053デフォルトの名無しさん
NGNGおお!サンクス!
0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNG実際にはどんな文字列でも動くから、
自分のマシンだけで使う場合は適当でいい。
0057デフォルトの名無しさん
NGNGhttp://www.microsoft.com/downloads/details.aspx?FamilyID=94551f58-484f-4a8c-bb39-adb270833afc&DisplayLang=en
0058デフォルトの名無しさん
NGNGMACアドレス使ってるからこっちがいいんだろうけど。
0059デフォルトの名無しさん
NGNGaIOService.newChannelFromURI(aURISpec).QueryInterface(Components.interfaces.nsIHttpChannel);
とかやってるのを見たのですが、newChannelFromURIの返り値はnsIChannelなのにnsIHttpChannelで
QueryInterfaceできるのは何故でしょうか。
0060デフォルトの名無しさん
NGNGhttp://www.xulplanet.com/references/xpcomref/ifaces/nsIHttpChannel.html
0061デフォルトの名無しさん
NGNGうーん、それってあまり正確じゃないような。
継承してるのは確かだけどね。
あえて言うなら、「理由はない」な。
aURISpecのプロトコルがhttp[s]?じゃなかったら、
QueryInterfaceは失敗する。
こういう実装がごく自然だってことはわかってほしいが…
006259
NGNG継承した別のインタフェイスを持っている可能性もあるってこと?
メソッドが返す値が持っている可能性があるインタフェイスの一覧とかって
どこ見たら分かりますか?
0063デフォルトの名無しさん
NGNG現在開いてるタブをすべて取得するにはどのようにすればよいのでしょうか?
0064デフォルトの名無しさん
NGNG0065デフォルトの名無しさん
NGNGありがとうございます!
0066デフォルトの名無しさん
NGNG>メソッドが返す値はドキュメントに書いてあるインタフェイスを
>継承した別のインタフェイスを持っている可能性もあるってこと?
そうなるね。
でもそれは、継承している親インターフェイス以外でもおき得る。
インターフェイスっていうのは、余分についてる分には文句の付けようがない。
よく本体と手足に喩えられるられるが、
「握手したいから手を差し出せ」
って言われた時、そいつの足が八本あろうがキャタピラになってようが、
手がついていれば握手に支障はない。
逆にいうと、足がいくらたくさんあっても手がなければ握手はできないから、
インターフェイスをきっちり実装するのが重要なんだけどね。
インターフェイスは必要条件を記述するためのものだから、
実際に送りつけられるインスタンスの十分条件とは限らない、って感じだろうか。
足が八本も付いてるのに、パンチしかしないのはもったいないなー、
と感じた時のためのQueryInterfaceで、
「足があるならキックもやらせようか」ということになる。
継承した子クラスってのは、普通の手だと思ってたのが
実は超合金製だった、とかそんな感じだね。
知らなきゃ握手にしか使えないが、
知ってれば釘を打ったりいろいろ使えて便利になる、と。
0067デフォルトの名無しさん
NGNG勘で以下のようにやりましたが、まったく処理が動きませんでした。
var runnable = { run : function(){ 重たい処理 } };
const CITHREAD = Components.interfaces.nsIThread;
var thread = Components.classes['@mozilla.org/thread;1'].createInstance(CITHREAD);
thread.init(runnable, 0, CITHREAD.PRIORITY_NORMAL, CITHREAD.SCOPE_GLOBAL, CITHREAD.STATE_JOINABLE);
0068デフォルトの名無しさん
NGNGなるほど。
>>59のコードを書いた人はどうやって
aIOService.newChannelFromURI(aURISpec)の返り値が
Components.interfaces.nsIHttpChannelお持っていると
気付いたのでしょうか。
たまたまQueryInterfaceして分かったってこと?
0069デフォルトの名無しさん
NGNG英語の方ならドキュメントも充実してるようだし・・・
0070デフォルトの名無しさん
NGNGしりたいのですが、どうすればいいですか?
0071デフォルトの名無しさん
NGNG0072デフォルトの名無しさん
NGNGinstanceof 構文で出来るよ。
var channel = ioService.newChannel("http://www.example.com/", null, null);
alert(channel instanceof Components.interfaces.nsIHttpChannel); // おそらく true
alert(channel instanceof Components.interfaces.nsIFTPChannel); // おそらく false
var channel = ioService.newChannel("ftp://ftp.example.com/", null, null);
alert(channel instanceof Components.interfaces.nsIHttpChannel) // おそらく false
alert(channel instanceof Components.interfaces.nsIFTPChannel) // おそらく true
0073デフォルトの名無しさん
NGNGタブはaddTabとかあるけど、treeがいまいち分からん。
0074デフォルトの名無しさん
NGNG>>72
ありがとうございます。
もうひとつ、nsIEnumerator,nsICollectionでは
アイテムの返り値は、nsISupportsですが
例えば、nsICollectionのなかに、複数の[spconnect wapped nsI*]を格納した時
どのように、QueryInterfaceすれば良いのでしょうか。
NO INTERFACEなどが、出てしまい、うまくいきません。おねがいします。
0075デフォルトの名無しさん
NGNGsupport.QueryInterface(Components.interfaces.xxx);
}catch(e){
if(e.name==" NO INTERFACE"}{
//インターフェイスがないとき
}
}
007674
NGNGGetElementAt(0)で、かってくる
nsISupportsがもっている、interfacesのリストなどが
わかるといいのですが。。
007773
NGNG0078デフォルトの名無しさん
NGNG0079デフォルトの名無しさん
NGNGcreateElementNSで要素を作ってappendChildしていくのも可能だけど
RDFデータソースからテンプレートで生成したほうがいい。
0080デフォルトの名無しさん
NGNGそれをもってるかどうかをまず確認した方がいいね。
0082デフォルトの名無しさん
NGNGそうそう。動的なツリーを作る場合の定石。
0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNGおお、そうなんですか。ではその方法で行こうと思います。
0085デフォルトの名無しさん
NGNGファイルをバイナリで読み込む方法はわかったけど、
nsILocalFileをつかわずにpythonでいうStringIOのような
ものを使うにはどうすればいい?
下のようにすれば、できるかと思ったけど。
nsISimpleStreamListener.init(outputStream,observer)
outputStream.write("hoge",4)
とすると、かならず固まるか、落ちてしまいます。
正しい使い方を、おしえてください;
0086デフォルトの名無しさん
NGNGMozillaとFirefoxとで逆のようです。
現状ではしかたなくnsPreferencesからapp.idを取得してFirefoxの場合は…としてますが、
他にうまい解決方法はありませんか?
そもそもなぜFirefoxはcheckedが逆になってしまうのか謎。
サンプルコード
<toolbarbutton type="checkbox" oncommand="alert(this.checked);" />
こちらは問題無し
<checkbox oncommand="alert(this.checked);" />
0087デフォルトの名無しさん
NGNGCSSが正しくプロパティを解釈出来てるんなら、
少なくともアトリビュートは正確、ってことになる。
alert((this.getAttribute("checked") == "true")? "Checked": "Not checked.");
でどうだろうか?
0088デフォルトの名無しさん
NGNGそれでも結果は同じでした。
0089デフォルトの名無しさん
NGNG是はどうしようもないかと
0090デフォルトの名無しさん
NGNGとしたらうまくいきました。
Firefoxではoncommandよりもcheckedが先に変更されるということか。
0091デフォルトの名無しさん
NGNGそうみたいだね。
DOM的に言えば、Semonkeyの方が正しい挙動だと思う。
0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNG読み出すときはhtmlからrdfに変換されてる
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNGサンクス
0096デフォルトの名無しさん
NGNGパーサが古いからだろうな。
どう考えてもソース公開以前のコードをそのまま使ってる。
0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNG行儀悪・・・
0100デフォルトの名無しさん
NGNGpopupshowingかpopupshownにイベントリスナーを追加したら?
0101デフォルトの名無しさん
NGNG実行する方法はありますか?
browserにaddEventListener('load')する方式だと遅すぎるようです。
TbEみたいにメソッド乗っ取りするしかないのでしょうか。
0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNGそういえばこんどRDFの解説本が出るみたいですよ
0104デフォルトの名無しさん
NGNGオブジェクト指向じゃなく手続き型だからね
0105デフォルトの名無しさん
NGNG理論的な部分はともかく、実際に手でコードを書いて遊んでみたほうが
よくわかると思います。
>>104
個人的には究極のオブジェクト指向だと思う。
DOMが子供だましに思えるほど。
0106デフォルトの名無しさん
NGNGオブジェクト指向について分かってないだろ
例:
オブジェクト指向→
rdf=new 〜();
rdf.delete();
手続き型→
rdfutil=new 〜()
rdfutil.delete(rdf);
0107デフォルトの名無しさん
NGNGRDFがわかってないだけでしょ
0108102
NGNG0109デフォルトの名無しさん
NGNGオブジェクト指向はプログラミングの様式。
手続き型なのは、RDFを扱うためのMozillaの実装。
0110デフォルトの名無しさん
NGNG0111デフォルトの名無しさん
NGNGこれをtrueにするのとfalseにするのとではどう違ってくるのでしょうか?
0112デフォルトの名無しさん
NGNGttp://www2u.biglobe.ne.jp/~oz-07ams/prog/dom-ref/Events/
trueだと、リスナーが登録されたノードの内部で起こったイベントについて、そのリスナーが真っ先に呼ばれる。
falseだと、イベントが発生したノードからリスナーが登録されたノードまでイベントが伝搬した後で、マターリとそのリスナーが呼ばれる。
0113デフォルトの名無しさん
NGNGありがとうございます。
前スレをのぞいたら、具体例が。
なんとなくわかってきました。
902 :デフォルトの名無しさん :04/11/05 09:17:34
現在、Firefoxの拡張作成をちょこちょこ勉強しているのですが、
Tab,Windowの新規作成時のタイミングを得たいのですが、
試してみたaddEventListener("load",では"更新"にも反応してしまいます。
他に何か方法はありますでしょうか?
903 :デフォルトの名無しさん :04/11/05 15:07:29
>>902
window.addEventListener('load', listener, false)
最後のfalseがポイント
0114デフォルトの名無しさん
NGNGXUL Event Propagation
http://www.mozilla-japan.org/docs/xul/xulnotes/xulnote_events.html
ここに詳しく解説してある
0115デフォルトの名無しさん
NGNG0116デフォルトの名無しさん
NGNGhttp://www.xulplanet.com/references/xpcomref/ifaces/nsIWindowMediator.html
0117デフォルトの名無しさん
NGNGnsILineInputStream というのがありますが、の readLine() を呼び出すとクラッシュしてしまいます。
0118デフォルトの名無しさん
NGNGopenDialog(URL, "", "alwaysLowered")ではもちろん常に背面に表示されてしまいます。
タスクバーを切り替えてフォーカスしたときや必要なときに最前面に出せるようにはできませんか?
nsIWindowMediatorあたりをさぐってみたのですが、get/setZLevelといったメソッドはなぜか使えないようです。
0119デフォルトの名無しさん
NGNGクラッシュしない。
>>118
noscriptってちゃんと書いてある。
0120デフォルトの名無しさん
NGNGFirefox 1.0 で nsILineInputStream は問題なくうごくよ。
ただ、readLine はすごく遅いから 全部読み込んで、String.split("\n")
したほうがいい。
0121117
NGNG>>120 の事情もあるので結局 split("\n");を使うことにしました。ありがとうございます。
0122デフォルトの名無しさん
NGNGぶっちゃけ、あんたの書き方が悪いんでしょ。
他人や機械のせいにするくらいなら、掲示板で質問しない方がいい。
0123デフォルトの名無しさん
NGNG0124デフォルトの名無しさん
NGNG0125デフォルトの名無しさん
NGNGできる。俺もThunderbirdがクラッシュした。
@mozilla.org/messengercompose/quotingのQuoteMessage()に渡した
nsIStreamListenerで、onStartRequest()が呼ばれた後にonDataAvailable()が
呼ばれる代わりにクラッシュした。コールバックだと、自分のコードのどこが
まずいのかよく分からん。
ソースからデバッグビルドのThunderbirdを作って、Emacs + GDBで追いかけ
ようかと思ったけど、そうなるとXULの範疇越えてるし。
0126デフォルトの名無しさん
NGNG0127デフォルトの名無しさん
NGNG0128デフォルトの名無しさん
NGNG0129デフォルトの名無しさん
NGNG0130デフォルトの名無しさん
NGNG|人
|___)
|__)クスクス
|∀・ )
 ̄ ̄ ̄ ̄
0131デフォルトの名無しさん
NGNGmozITXTToHTMLConv や mozIJSSubScriptLoader とか moz から始まるのがあったりする。
0132デフォルトの名無しさん
NGNGgetWindowForResourceはあるのですが、その逆がありません。
0133デフォルトの名無しさん
NGNGあるにはあるけどかなりの少数派だね。
いまさらnsをmozに付け替えるわけにはいかないから、
nsの意味を捏造した方が早いと思う。
ネームスペースとか。
COMに全然関係ないな…
0134132
NGNGgetWindowForResourceを使うためにWindowのResourceを取得する方法を模索しているのですが、
http://www.xulplanet.com/tutorials/xultu/xpcomex.html
ここを見ると、templateでなぜかIDが割り当てられていて
そのIDからgetWindowForResourceしてるようなのですが
WindowのResourceを取得する方法は他にないのでしょうか?
0135デフォルトの名無しさん
NGNGなぜリソースが必要なんだ?
0136デフォルトの名無しさん
NGNGリソースというかgetWindowForResourceで使う引数が欲しいのです。
0137デフォルトの名無しさん
NGNG0138デフォルトの名無しさん
NGNGそれが要るプログラムな訳でして・・
とりあえず>>134のURL先のサンプルソースで割り当てられてあるIDを
RDFデータソースから取得できたらいいのですが。
0139デフォルトの名無しさん
NGNG多分、かなりアホなことやってると思うよ。
とりあえず、>>134を読んでリソースの受け取り方がわからないようじゃ、
RDFとか口走るのはどうかと思う。
つーか、あなたは>>115でしょ?
データソース、本当に要るのか?
ウィンドウのリストがあれば満足なんじゃないのか?
0140デフォルトの名無しさん
NGNG完成したら晒してもらえるかな?
たとえば以前あった、Googlebarの検索語を全角空白で区切っても
ちゃんと動作するようにしたのなんかぜひ使ってみたいし、
このスレで出た質問がどう生かされたのか見てみたい。
0141デフォルトの名無しさん
NGNG0142デフォルトの名無しさん
NGNGはぁ、説明するのまんどくさいんでもういいです。
0143デフォルトの名無しさん
NGNGまあ、ムキにならずにタチの悪い質問はスルーした方がお互いの為ではあるな。
0144デフォルトの名無しさん
NGNG>>140
>いろんなプロジェクトが進んでるみたい
公開されているのがほとんどです。(ScrapBookとかMoz2chとか)
>Googlebarの検索語を全角空白で区切ってもちゃんと動作するようにしたの
是は簡単にできる気がします。
>>134
resourceという変数はDOMの(要素の)ノードが入っていますのでそれを入れればいいかと
0145144
NGNGwindow.document.getElementsByTagName("*")でいいかと
0146デフォルトの名無しさん
NGNG多分違う。
0148デフォルトの名無しさん
NGNGそもそもこれが間違い
0149144
NGNG属性ノードの間違いorz
スマソ
0150デフォルトの名無しさん
NGNGもしDOMの話をしてるんだったら、属性じゃなくて、要素のID属性だから、
それでいいんだけど、多分、>>132のやりたいことは
コンテナからRDFResouceを直に取り出すことじゃないかな。
0151デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています