Mozillaでプログラミング(XUL) その2
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG前スレ
Mozillaでプログラミング(XUL)
http://pc5.2ch.net/test/read.cgi/tech/1019704370/
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デフォルトの名無しさん
NGNG0152デフォルトの名無しさん
NGNG何をしたいかがわからないと答えようがないなぁ
0153132
NGNGIDを渡せばいいってのは分かるんですが、Window Mediatorデータソースから
直接getWindowForResourceの引数に使う値を取り出したいのです。
0154デフォルトの名無しさん
NGNG#ウインドウ一覧が欲しいという事なのかな
#もうちょっと具体的にお願いします。
0155デフォルトの名無しさん
NGNG>>139-142
0156デフォルトの名無しさん
NGNGhttp://xulplanet.com/references/xpcomref/comps/c_rdfdatasource1namewindowmediator.html
このコンポーネントを使用してるのですが
>ウインドウ一覧が欲しいという事なのかな
はい、とりあえずそうです。
0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNGでも単純なリストではないって事???
0159デフォルトの名無しさん
NGNGEnumeratorを回すのが定石。
でも、ウィンドウのリストがほしいだけだったら、mediatorでも出来る上に
どっちみちSimpleEnumeratorの説明をしなくちゃならんから、
遠回りしてるだけなんだよ。
だから、情報を小出しにすんな、って言われてるでしょ?
0160デフォルトの名無しさん
NGNG頼むから、getEnumeratorを使ってくれ。
RDFは、もうちょっと知識が身に付いたあとでも遅くないから。
0161デフォルトの名無しさん
NGNG実は2分で結論が出てることを、ここまで引っ張ってきてるわけだ…
0162132
NGNGていうか、説明が難しい上にスレも荒れるので、自力で解決したいと思います・・
今後自分に対するレスはもう不要です、いやほんとに。
0163デフォルトの名無しさん
NGNG0164デフォルトの名無しさん
NGNGComponents.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getWindowForResource("window-1");
エラー: Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getWindowForResource is not a function
0165デフォルトの名無しさん
NGNG>>66
http://www.xulplanet.com/references/xpcomref/ifaces/nsIWindowDataSource.html
0166デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています