2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:04/12/05 00:09:18
オラ拡張作る。

前スレ
Mozillaでプログラミング(XUL)
http://pc5.2ch.net/test/read.cgi/tech/1019704370/

2 :デフォルトの名無しさん:04/12/05 00:18:44
テンプレ書いてるうちに立ってたorz

XULはXMLベースのUI記述言語です。
Mozilla,Firefox,Thunderbird,Netscape等の
Gecko系のソフトウェアために開発されました。

このスレはXUL、javascriptで利用できるXPCOM、
拡張を作り方などを主に話しあうスレです。

前スレ
Mozillaでプログラミング(XUL)
http://pc5.2ch.net/test/read.cgi/tech/1019704370/
姉妹スレ
Geckoベースのブラウザを作ろう
http://pc5.2ch.net/test/read.cgi/tech/1023546699/l50

>>2-50あたりに関連リンク、近況など。

3 :1:04/12/05 00:20:13
>>2
うわ、すまそ

4 :デフォルトの名無しさん:04/12/05 00:21:06
>>1
いやいや、スレ立て乙。

5 :デフォルトの名無しさん:04/12/05 00:26:06
>>1
乙!

6 :デフォルトの名無しさん:04/12/05 00:28:06
Z。

7 :デフォルトの名無しさん:04/12/05 00:31:38
みなさん、overlayした拡張を作るときどのようにテストしてるんですか?
Firefoxで、xul単体だけなら引数の-chromeで表示・テストできるんですけど
overlayした拡張のテスト方法が分かりません。

8 :デフォルトの名無しさん:04/12/05 00:36:23

MozillaJapan 資料集: コアアーキテクチャ: XUL
http://www.mozilla-japan.org/catalog/architecture/xul/
XUL Tutorial 日本語版 - 和訳ドキュメント一覧
http://www.mozilla.gr.jp/jt/xul/progress.html
XULアプリケーション作成入門
http://www.mozilla.gr.jp/~kazhik/xul/tutorial.html
XUL研 Moz2chなど
http://xul-app.hp.infoseek.co.jp/
XULプログラマの参考書
http://www.bekkoame.ne.jp/~poetlabo/WWW/XULref/XUL_Reference.html



9 :デフォルトの名無しさん:04/12/05 00:40:47
XUL Planet 聖典
http://www.xulplanet.com/

10 :デフォルトの名無しさん:04/12/05 00:42:28
>>7
ブラウザ(chrome://browser/content/browser.xul)にオーバーレイしたXULなら
毎回ブラウザを再起動してテストしなければならない。

11 :デフォルトの名無しさん:04/12/05 01:02:37
関連リンク
Mozilla Cross Reference(ソースコード検索)
http://lxr.mozilla.org/mozilla/

上とxulplanetでなんとかなる。以下余談。

mozilla.orgはサイト構成に問題があるので、自力で見つけるのは難しい。
http://www.mozilla.org/scriptable/components_object.html
Components.interfaces.nsILocalFileとか機械的にコピペしてる人は
一度くらい読んでおくといいかも。

http://www.mozilla-japan.org/docs/tutorials/tinderstatus/
公式拡張サンプル。mykはFirefox用の記事を書いてるって
3ヶ月くらい前に言ってたけど、まだ完成してないらしい。
多分忘れてる。

http://kb-upgrade.mozillazine.org/index.php/Main_Page
私が書いたコードも入っているが、はっきり言うと全然使えない。
でも、__proto__とかやけにマニアックな解説がある。

http://wiki.fdiary.net/xul/
前スレの後ろの方で紹介されてた。
wikiだから、いつの間にか化けてるかも。

Javascriptを極めたいなら、
http://www.crockford.com/#javascript
こういうのが好きな人とか。
foo.prototype.__defineGetter__('bar', function(){return 0;});

12 :デフォルトの名無しさん:04/12/05 01:05:47
>>10
ありがとうございます。
それは、http://www.mozilla.gr.jp/~kazhik/xul/tutorial.htmlに書いてあるように
chromeディレクトリ下にxulなどのファイルを置いた状態でテストできるのでしょうか?

13 :デフォルトの名無しさん:04/12/05 01:08:40
もちろんできますよ。

14 :デフォルトの名無しさん:04/12/05 01:12:29
>>13
それは、引数の-chromeをつけてFirefox本体を起動するんですか?
質問が多くてすいません

15 :デフォルトの名無しさん:04/12/05 01:23:26
いや、そんな必要は無いです。
引数-chromeはあるクロムURLのXULを単体のウィンドウで開きたい時だけ使います。

16 :デフォルトの名無しさん:04/12/05 01:26:39
多分、なんか勘違いしてるんじゃないかな。
overlayは当然インストールしないとテストできない。
で、インストールする時にzipで固めずにインストールするといい感じ。
http://kb-upgrade.mozillazine.org/index.php/Dev_:_Tips_:_Disable_XUL_cache

17 :デフォルトの名無しさん:04/12/05 01:30:00
>>15
そうだったんですかー。
じゃあoverlayしたxulを書いたら、普通に起動するだけでOKなんですね。
ありがとうございました。

>>16
ってやっぱりインストールしないとダメなんですね・・・
installed-chrome.txtを編集するだけじゃダメですか?

18 :デフォルトの名無しさん:04/12/05 01:33:17
installed-chrome.txtを編集するのとinstallするのは全く同じ。
インストーラーが書き換えるか手で書き換えるかの違いだけ。
でも、firefoxの場合、フォルダをインストールする方が楽だと思う。

19 :デフォルトの名無しさん:04/12/05 01:39:29
>>18
勉強になります。ありがとうございました。

20 :デフォルトの名無しさん:04/12/05 01:46:20
だから、順番が逆なんだね。
インストールスクリプトを最初に書いて、
白紙のoverlayをとりあえずインストールするんだよ。
で、いろいろいじって完成したら、コピーをとってアンインストールして、
zipで固めてインストールテスト、公開、鋭いツッコミ、ぎゃあ。

21 :デフォルトの名無しさん:04/12/05 01:49:20
開発用の環境とインストールテスト用の環境は分けといた方が楽だよ。
(当然プロファイルは分けて)


22 :デフォルトの名無しさん:04/12/05 08:21:21
>>10
毎回ブラウザを再起動しなくてもブラウザ自体をリロードすればいい

#そのためのxuld
Ctrl+\でリロード
http://nazodane.hp.infoseek.co.jp/extension/xuld.xhtml

23 :デフォルトの名無しさん:04/12/05 10:06:56
>>22
なるほど!!今まで馬鹿みたいに毎回再起動してたわ。

24 :デフォルトの名無しさん:04/12/05 10:35:11
漏れは新しいウィンドウ開いて確認してる。


25 :デフォルトの名無しさん:04/12/05 12:04:20
>>24
ですね。私もそれです。

26 :デフォルトの名無しさん:04/12/05 23:30:52
>>11 に追加
http://www.hevanet.com/acorbin/xul/top.xul
XUL コンポーネントのサンプル集。 XUL のリファレンスとしても使える。

27 :デフォルトの名無しさん:04/12/06 06:00:49
誰あ前スレを閲覧できておくように保存してくれる人など居ないものか?

28 :デフォルトの名無しさん:04/12/06 06:30:10
保存してまとめサイトにアップしておきました。

ttp://firefox.geckodev.org/?%B4%D8%CF%A2%A5%B9%A5%EC%A5%C3%A5%C9#i0181e3b

29 :デフォルトの名無しさん:04/12/06 06:47:10
>>18
フォルダをインストールってどうやるの?

30 :デフォルトの名無しさん:04/12/06 07:43:01
>>29
前スレにあったはず。

31 :30:04/12/06 08:30:16
すまん。。

>>29
>>16


32 :デフォルトの名無しさん:04/12/06 16:35:35
>>16をわかりやすく言うと、
chromeにjarファイルの代わりにフォルダをいれて、
install.rdfにjarファイルの代わりにフォルダ名を書いとけってことだ

33 :デフォルトの名無しさん:04/12/06 19:53:41
>>31
>>32
トン!

34 :デフォルトの名無しさん:04/12/08 01:37:07
まとめサイトの和訳チュートリアル見ながら見よう見真似で拡張の中身とか
install.rdf install.jsを書いて試したんですが、いざインストールしても
再起動する時にエラーで正常にインストールされません。

エラー文にはcontent.rdfの位置指定が間違ってるとかあるんですが・・。

35 :デフォルトの名無しさん:04/12/08 06:38:25
install.jsはとりあえずは不要では?
また、content.rdfではなく、contents.rdfです。


36 :デフォルトの名無しさん:04/12/08 07:18:36
質問です。firefoxの拡張を作ってるのですが
ツリーのカラムヘッダを非表示にするにはどのようにすればよいのでしょうか?
treecolにhideheaderを追加してもダメでした。

37 :デフォルトの名無しさん:04/12/08 07:24:12
hidecolumnpicker="true"になってないとか?

38 :デフォルトの名無しさん:04/12/08 07:28:17
>>37
ありがとうございます。とりあえずこんな感じで書いてるんですが、ダメでした・・orz

<tree flex="1">
<treecols>
<treecol id="test" hideheader="true" hidecolumnpicker="true" primary="true" flex="1" />
</treecols>

<treechildren>
<treeitem container="true" open="true">
<treerow>
<treecell label="test"/>
</treerow>

<treechildren>
<treeitem>
<treerow>
<treecell label="test1"/>
</treerow>
</treeitem>
</treechildren>
</treeitem>
</treechildren>
</tree>


39 :デフォルトの名無しさん:04/12/08 07:31:48
hidecolumnpickerはtreeの属性です。

<tree flex="1" hidecolumnpicker="true">
以下略

40 :デフォルトの名無しさん:04/12/08 07:33:25
treeにhidecolumnpicker="true"を書いたらいけました・・・
>>37さんありがとうございました。
スレ汚しすまそ。

41 :デフォルトの名無しさん:04/12/08 13:15:49
>>32
肝心なインストールの時はどうやるんだ・・・xpiに固めたら意味ないだろうし・・・
英語読めねー誰か解説してくりー

42 :デフォルトの名無しさん:04/12/08 13:19:15
>>41
いや、xpiには固めるんだよ。

43 :デフォルトの名無しさん:04/12/08 13:23:50
>>42
マジですか、でもそれじゃあ編集できないんじゃ・・?

44 :デフォルトの名無しさん:04/12/08 13:26:28
あーなんとなく意味分かったかも。

45 :デフォルトの名無しさん:04/12/08 13:28:56
xpiには固めないでしょ。
情報が古いかもしれないけど、
http://www.mozilla.gr.jp/~kazhik/xul/tutorial01.html
このページに書いてあるように手動でフォルダを置き、設定ファイルを書き換える。

46 :デフォルトの名無しさん:04/12/08 13:29:54
そう、いじるのはプロファイルの中身だから、
上手い具合に解凍されてるわけだ。

47 :デフォルトの名無しさん:04/12/08 13:30:30
>>45
そっちの方が古い

48 :デフォルトの名無しさん:04/12/08 13:32:07
>>45-46
とりあえずxpiに固めて試してみます。
お二人さんありがd


49 :デフォルトの名無しさん:04/12/08 13:37:37
tinderstatusとか、xpiだけどインストールすると
解凍された状態になる。
確か、torisugari氏もget file sizeのnon-jarred版を公開してたはずだが、
404だね。

50 :デフォルトの名無しさん:04/12/08 18:38:02
一見404でも、この辺にあったりする
http://cgi29.plala.or.jp/mozzarel/addon/obsolete/phoenix_firebird_firefox/non-jarred/
http://cgi29.plala.or.jp/mozzarel/addon/firefox/tinderstatus/

51 :デフォルトの名無しさん:04/12/09 03:05:05
install.rdfのIDって適当に書いていいんですかね?

52 :デフォルトの名無しさん:04/12/09 03:38:23
>>51
だめ。GUID Generator を使おう。

http://extensions.roachfiend.com/cgi-bin/guid.pl

53 :デフォルトの名無しさん:04/12/09 04:02:42
>>52
おお!サンクス!

54 :デフォルトの名無しさん:04/12/09 07:20:19
たまに適当に書いているというか拡張の名前を含めているのもみかけるが。

55 :デフォルトの名無しさん:04/12/09 08:21:52
適当すぎ。


56 :デフォルトの名無しさん:04/12/09 08:38:40
仕様上の要求はGUIDなので、Web上で公開するならGUIDを使うべき。
実際にはどんな文字列でも動くから、
自分のマシンだけで使う場合は適当でいい。

57 :デフォルトの名無しさん:04/12/09 18:08:22
MSのGUIDGenとかで良いよ。
http://www.microsoft.com/downloads/details.aspx?FamilyID=94551f58-484f-4a8c-bb39-adb270833afc&DisplayLang=en

58 :デフォルトの名無しさん:04/12/09 20:09:14
GUIDGenは大文字と小文字が混じってるのがなぁ。
MACアドレス使ってるからこっちがいいんだろうけど。

59 :デフォルトの名無しさん:04/12/09 23:19:17
XPCOMで

aIOService.newChannelFromURI(aURISpec).QueryInterface(Components.interfaces.nsIHttpChannel);

とかやってるのを見たのですが、newChannelFromURIの返り値はnsIChannelなのにnsIHttpChannelで
QueryInterfaceできるのは何故でしょうか。

60 :デフォルトの名無しさん:04/12/09 23:52:16
nsIHttpChannelはnsIChannelを継承してるから。
http://www.xulplanet.com/references/xpcomref/ifaces/nsIHttpChannel.html

61 :デフォルトの名無しさん:04/12/10 01:43:07
>>60
うーん、それってあまり正確じゃないような。
継承してるのは確かだけどね。
あえて言うなら、「理由はない」な。
aURISpecのプロトコルがhttp[s]?じゃなかったら、
QueryInterfaceは失敗する。
こういう実装がごく自然だってことはわかってほしいが…

62 :59:04/12/10 07:28:25
メソッドが返す値はドキュメントに書いてあるインタフェイスを
継承した別のインタフェイスを持っている可能性もあるってこと?
メソッドが返す値が持っている可能性があるインタフェイスの一覧とかって
どこ見たら分かりますか?

63 :デフォルトの名無しさん:04/12/10 08:30:46
firefoxでタブを一覧表示しようとしてるのですが
現在開いてるタブをすべて取得するにはどのようにすればよいのでしょうか?

64 :デフォルトの名無しさん:04/12/10 08:40:45
gBrowser.mTabContainer.childNodes


65 :デフォルトの名無しさん:04/12/10 08:46:02
>>64
ありがとうございます!

66 :デフォルトの名無しさん:04/12/10 11:06:21
>>62
>メソッドが返す値はドキュメントに書いてあるインタフェイスを
>継承した別のインタフェイスを持っている可能性もあるってこと?

そうなるね。
でもそれは、継承している親インターフェイス以外でもおき得る。
インターフェイスっていうのは、余分についてる分には文句の付けようがない。
よく本体と手足に喩えられるられるが、
「握手したいから手を差し出せ」
って言われた時、そいつの足が八本あろうがキャタピラになってようが、
手がついていれば握手に支障はない。

逆にいうと、足がいくらたくさんあっても手がなければ握手はできないから、
インターフェイスをきっちり実装するのが重要なんだけどね。

インターフェイスは必要条件を記述するためのものだから、
実際に送りつけられるインスタンスの十分条件とは限らない、って感じだろうか。

足が八本も付いてるのに、パンチしかしないのはもったいないなー、
と感じた時のためのQueryInterfaceで、
「足があるならキックもやらせようか」ということになる。

継承した子クラスってのは、普通の手だと思ってたのが
実は超合金製だった、とかそんな感じだね。
知らなきゃ握手にしか使えないが、
知ってれば釘を打ったりいろいろ使えて便利になる、と。

67 :デフォルトの名無しさん:04/12/10 12:22:55
JavaScriptの重たいループ処理をバックグラウンドで実行させる方法はありますでしょうか。
勘で以下のようにやりましたが、まったく処理が動きませんでした。

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);

68 :デフォルトの名無しさん:04/12/10 23:23:07
>>66
なるほど。

>>59のコードを書いた人はどうやって
aIOService.newChannelFromURI(aURISpec)の返り値が
Components.interfaces.nsIHttpChannelお持っていると
気付いたのでしょうか。
たまたまQueryInterfaceして分かったってこと?


69 :デフォルトの名無しさん:04/12/10 23:32:31
内部の情報に詳しかったんじゃないの?
英語の方ならドキュメントも充実してるようだし・・・

70 :デフォルトの名無しさん:04/12/11 01:47:54
xpcom warpped objectかどうかを判定する確実な方法が
しりたいのですが、どうすればいいですか?

71 :デフォルトの名無しさん:04/12/11 02:29:33
try-catch構文でQueryInterfaceしてみるのが一番早いのではないでしょうか。

72 :デフォルトの名無しさん:04/12/11 03:16:44
>>70
instanceof 構文で出来るよ。

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

73 :デフォルトの名無しさん:04/12/11 06:15:04
treeにアイテムを追加するにはどうすればいいの?
タブはaddTabとかあるけど、treeがいまいち分からん。


74 :デフォルトの名無しさん:04/12/11 08:49:33
>>71
>>72
ありがとうございます。
もうひとつ、nsIEnumerator,nsICollectionでは
アイテムの返り値は、nsISupportsですが
例えば、nsICollectionのなかに、複数の[spconnect wapped nsI*]を格納した時
どのように、QueryInterfaceすれば良いのでしょうか。
NO INTERFACEなどが、出てしまい、うまくいきません。おねがいします。


75 :デフォルトの名無しさん:04/12/11 09:11:32
try{
support.QueryInterface(Components.interfaces.xxx);
}catch(e){
if(e.name==" NO INTERFACE"}{
//インターフェイスがないとき

}
}

76 :74:04/12/11 10:11:56
nsICollectionの中身が全部欲しいから、
GetElementAt(0)で、かってくる
nsISupportsがもっている、interfacesのリストなどが
わかるといいのですが。。


77 :73:04/12/11 12:57:17
もしかして、appendChildとか使わないとダメですか?

78 :デフォルトの名無しさん:04/12/11 13:09:15
俺だったらDOM使うけど他にも方法あると思うよ

79 :デフォルトの名無しさん:04/12/11 14:13:23
>>73
createElementNSで要素を作ってappendChildしていくのも可能だけど
RDFデータソースからテンプレートで生成したほうがいい。

80 :デフォルトの名無しさん:04/12/11 14:27:20
一応、nsIClassInfoっていう専用のインターフェイスがあるから、
それをもってるかどうかをまず確認した方がいいね。

81 :73:04/12/11 14:30:49
>>79
その方法は、要素の入れ替わりが頻繁に起こるタイプのプログラムに向いてますかね?
そういうのを作ろうとしてるもので・・・

82 :デフォルトの名無しさん:04/12/11 14:32:38
>>81
そうそう。動的なツリーを作る場合の定石。

83 :デフォルトの名無しさん:04/12/11 14:33:59
要素の入れ替わりが一度でも起こるんならappendChild, removeChildなんてめんどくさくてやってられん。

84 :デフォルトの名無しさん:04/12/11 14:48:55
>>82
おお、そうなんですか。ではその方法で行こうと思います。


85 :デフォルトの名無しさん:04/12/12 15:03:53
binaryStreamをつかって読み書きしたいのですが
ファイルをバイナリで読み込む方法はわかったけど、
nsILocalFileをつかわずにpythonでいうStringIOのような
ものを使うにはどうすればいい?
下のようにすれば、できるかと思ったけど。
nsISimpleStreamListener.init(outputStream,observer)
outputStream.write("hoge",4)
とすると、かならず固まるか、落ちてしまいます。
正しい使い方を、おしえてください;



86 :デフォルトの名無しさん:04/12/12 15:41:35
type="checkbox"にしたtoolbarbuttonやmenuitemで、oncommand時のcheckedプロパティが
MozillaとFirefoxとで逆のようです。
現状ではしかたなくnsPreferencesからapp.idを取得してFirefoxの場合は…としてますが、
他にうまい解決方法はありませんか?
そもそもなぜFirefoxはcheckedが逆になってしまうのか謎。

サンプルコード
<toolbarbutton type="checkbox" oncommand="alert(this.checked);" />
こちらは問題無し
<checkbox oncommand="alert(this.checked);" />

87 :デフォルトの名無しさん:04/12/12 16:55:10
>>86
CSSが正しくプロパティを解釈出来てるんなら、
少なくともアトリビュートは正確、ってことになる。

alert((this.getAttribute("checked") == "true")? "Checked": "Not checked.");
でどうだろうか?

88 :デフォルトの名無しさん:04/12/12 17:20:53
>>87
それでも結果は同じでした。

89 :デフォルトの名無しさん:04/12/12 17:24:02
oncommandとチェックの発生順序かな
是はどうしようもないかと

90 :デフォルトの名無しさん:04/12/12 17:34:31
oncommand="setTimeout(function(){alert(event.originalTarget.checked);}, 0);"
としたらうまくいきました。
Firefoxではoncommandよりもcheckedが先に変更されるということか。


91 :デフォルトの名無しさん:04/12/12 17:38:23
>>90
そうみたいだね。
DOM的に言えば、Semonkeyの方が正しい挙動だと思う。

92 :デフォルトの名無しさん:04/12/12 19:51:56
BookmarkなどのRDFデータソースってどこに置かれてるんでしょう?


93 :デフォルトの名無しさん:04/12/12 19:53:00
htmlに変換されて保存されてる
読み出すときはhtmlからrdfに変換されてる

94 :デフォルトの名無しさん:04/12/12 22:37:51
それにしてもブックマークのHTMLってなんであんなに汚いんだろう

95 :デフォルトの名無しさん:04/12/12 22:38:37
>>93
サンクス

96 :デフォルトの名無しさん:04/12/12 23:18:34
>>94
パーサが古いからだろうな。
どう考えてもソース公開以前のコードをそのまま使ってる。

97 :デフォルトの名無しさん:04/12/15 10:38:15
Firefoxのタブのコンテキストメニューのオーバーレイってどんな感じでやればいいんでしょう?

98 :デフォルトの名無しさん:04/12/15 11:31:35
スクリプトで動的に編集するしかないんじゃない?


99 :デフォルトの名無しさん:04/12/15 14:50:31
mTabContainerのonclickを上書きするとか?

行儀悪・・・

100 :デフォルトの名無しさん:04/12/15 17:28:17
>>99
popupshowingかpopupshownにイベントリスナーを追加したら?

101 :デフォルトの名無しさん:04/12/17 04:31:04
ページがロードされるたびに、WebページのJavaScriptより先にスクリプトを
実行する方法はありますか?
browserにaddEventListener('load')する方式だと遅すぎるようです。
TbEみたいにメソッド乗っ取りするしかないのでしょうか。

102 :デフォルトの名無しさん:04/12/17 16:28:12
RDFデータソースの操作って難すぃね

103 :デフォルトの名無しさん:04/12/17 16:38:26
http://www.kanzaki.com/book/rdf/
そういえばこんどRDFの解説本が出るみたいですよ

104 :デフォルトの名無しさん:04/12/17 18:34:17
>>102
オブジェクト指向じゃなく手続き型だからね

105 :デフォルトの名無しさん:04/12/17 20:45:07
>>103
理論的な部分はともかく、実際に手でコードを書いて遊んでみたほうが
よくわかると思います。

>>104
個人的には究極のオブジェクト指向だと思う。
DOMが子供だましに思えるほど。

106 :デフォルトの名無しさん:04/12/17 21:43:47
>>105
オブジェクト指向について分かってないだろ

例:
オブジェクト指向→
rdf=new 〜();
rdf.delete();
手続き型→
rdfutil=new 〜()
rdfutil.delete(rdf);


107 :デフォルトの名無しさん:04/12/17 22:58:08
>>106
RDFがわかってないだけでしょ

108 :102:04/12/18 00:06:39
難すぃというか面倒くさいね

109 :デフォルトの名無しさん:04/12/18 00:09:38
RDFはデータ構造。
オブジェクト指向はプログラミングの様式。
手続き型なのは、RDFを扱うためのMozillaの実装。


110 :デフォルトの名無しさん:04/12/18 00:14:27
まあSQLでデータベースをいじるのに比べたら全然難しいよね

111 :デフォルトの名無しさん:04/12/18 01:16:32
addEventListenerの第三引数のuseCaptureってのが意味不明なのですが、
これをtrueにするのとfalseにするのとではどう違ってくるのでしょうか?

112 :デフォルトの名無しさん:04/12/18 01:53:23
ttp://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-flow-capture
ttp://www2u.biglobe.ne.jp/~oz-07ams/prog/dom-ref/Events/
trueだと、リスナーが登録されたノードの内部で起こったイベントについて、そのリスナーが真っ先に呼ばれる。
falseだと、イベントが発生したノードからリスナーが登録されたノードまでイベントが伝搬した後で、マターリとそのリスナーが呼ばれる。


113 :デフォルトの名無しさん:04/12/18 02:31:49
>>112
ありがとうございます。
前スレをのぞいたら、具体例が。
なんとなくわかってきました。

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がポイント


114 :デフォルトの名無しさん:04/12/18 07:35:45
>>111-113
XUL Event Propagation
http://www.mozilla-japan.org/docs/xul/xulnotes/xulnote_events.html
ここに詳しく解説してある

115 :デフォルトの名無しさん:04/12/18 22:57:57
開いてるウィンドウをすべて取得したいのですが、RDFデータソース以外から取得できますか?

116 :デフォルトの名無しさん:04/12/18 22:59:23
>>115
http://www.xulplanet.com/references/xpcomref/ifaces/nsIWindowMediator.html

117 :デフォルトの名無しさん:04/12/19 15:54:12
外部ファイルからテキストを一行づつ読み込むことってできますか?
nsILineInputStream というのがありますが、の readLine() を呼び出すとクラッシュしてしまいます。

118 :デフォルトの名無しさん:04/12/19 17:22:37
XULのウィンドウを最前面ではなく背面に表示したいのですが、
openDialog(URL, "", "alwaysLowered")ではもちろん常に背面に表示されてしまいます。
タスクバーを切り替えてフォーカスしたときや必要なときに最前面に出せるようにはできませんか?
nsIWindowMediatorあたりをさぐってみたのですが、get/setZLevelといったメソッドはなぜか使えないようです。

119 :デフォルトの名無しさん:04/12/19 18:14:50
>>117
クラッシュしない。
>>118
noscriptってちゃんと書いてある。

120 :デフォルトの名無しさん:04/12/19 18:20:34
>>117

Firefox 1.0 で nsILineInputStream は問題なくうごくよ。
ただ、readLine はすごく遅いから 全部読み込んで、String.split("\n")
したほうがいい。

121 :117:04/12/19 19:28:18
当方Firefox1.0(Linux i686)で、やはりクラッシュするするのですが、
>>120 の事情もあるので結局 split("\n");を使うことにしました。ありがとうございます。


122 :デフォルトの名無しさん:04/12/19 19:46:33
>やはりクラッシュする
ぶっちゃけ、あんたの書き方が悪いんでしょ。
他人や機械のせいにするくらいなら、掲示板で質問しない方がいい。

123 :デフォルトの名無しさん:04/12/20 06:58:42
むしろJavaScriptでクラッシュなんてどうやったらできるんだ

124 :デフォルトの名無しさん:04/12/20 08:36:46
「あんたの書き方が悪い」で済ませられない重要なものかもしれないぞ

125 :デフォルトの名無しさん:04/12/20 12:03:51
>>123
できる。俺もThunderbirdがクラッシュした。

@mozilla.org/messengercompose/quotingのQuoteMessage()に渡した
nsIStreamListenerで、onStartRequest()が呼ばれた後にonDataAvailable()が
呼ばれる代わりにクラッシュした。コールバックだと、自分のコードのどこが
まずいのかよく分からん。

ソースからデバッグビルドのThunderbirdを作って、Emacs + GDBで追いかけ
ようかと思ったけど、そうなるとXULの範疇越えてるし。

126 :デフォルトの名無しさん:04/12/20 18:50:29
前から疑問に感じていたのですが、XPCOMインターフェースの接頭辞nsは何の略ですか?

127 :デフォルトの名無しさん:04/12/20 18:59:37
ネットスケープじゃないの。


128 :デフォルトの名無しさん:04/12/20 19:02:03
なぜmzじゃないんですか?

129 :デフォルトの名無しさん:04/12/20 19:11:19
Netscape社が作ったからだろ。おまえの頭はカボチャか?




130 :デフォルトの名無しさん:04/12/20 19:14:41
カボチャじゃありません。ウンコです。
 |人
 |___)
 |__)クスクス
 |∀・ )
  ̄ ̄ ̄ ̄

131 :デフォルトの名無しさん:04/12/21 00:25:06
>>128
mozITXTToHTMLConv や mozIJSSubScriptLoader とか moz から始まるのがあったりする。

132 :デフォルトの名無しさん:04/12/21 05:54:43
任意のWindowのResourceを取得する方法はありますか?
getWindowForResourceはあるのですが、その逆がありません。

133 :デフォルトの名無しさん:04/12/21 18:09:15
>>131
あるにはあるけどかなりの少数派だね。
いまさらnsをmozに付け替えるわけにはいかないから、
nsの意味を捏造した方が早いと思う。
ネームスペースとか。
COMに全然関係ないな…

134 :132:04/12/21 18:21:47
少し質問を変えます。
getWindowForResourceを使うためにWindowのResourceを取得する方法を模索しているのですが、
http://www.xulplanet.com/tutorials/xultu/xpcomex.html
ここを見ると、templateでなぜかIDが割り当てられていて
そのIDからgetWindowForResourceしてるようなのですが
WindowのResourceを取得する方法は他にないのでしょうか?

135 :デフォルトの名無しさん:04/12/21 19:07:32
>>134
なぜリソースが必要なんだ?

136 :デフォルトの名無しさん:04/12/21 19:13:26
>>135
リソースというかgetWindowForResourceで使う引数が欲しいのです。

137 :デフォルトの名無しさん:04/12/21 19:15:01
普通にwindowがあれば要らないんじゃない?

138 :デフォルトの名無しさん:04/12/21 19:24:56
>>137
それが要るプログラムな訳でして・・
とりあえず>>134のURL先のサンプルソースで割り当てられてあるIDを
RDFデータソースから取得できたらいいのですが。

139 :デフォルトの名無しさん:04/12/21 20:00:37
>>138
多分、かなりアホなことやってると思うよ。
とりあえず、>>134を読んでリソースの受け取り方がわからないようじゃ、
RDFとか口走るのはどうかと思う。

つーか、あなたは>>115でしょ?
データソース、本当に要るのか?
ウィンドウのリストがあれば満足なんじゃないのか?

140 :デフォルトの名無しさん:04/12/21 20:16:34
このスレだけでもずいぶんいろんなプロジェクトが進んでるみたいだけど
完成したら晒してもらえるかな?
たとえば以前あった、Googlebarの検索語を全角空白で区切っても
ちゃんと動作するようにしたのなんかぜひ使ってみたいし、
このスレで出た質問がどう生かされたのか見てみたい。

141 :デフォルトの名無しさん:04/12/21 20:26:58
最近このスレに感じの悪いやつが一人紛れ込んでるな。

142 :デフォルトの名無しさん:04/12/21 20:51:08
>>139
はぁ、説明するのまんどくさいんでもういいです。

143 :デフォルトの名無しさん:04/12/21 20:56:00
むしろ、情報を小出しにしてるやしの方がアレだと思う。
まあ、ムキにならずにタチの悪い質問はスルーした方がお互いの為ではあるな。

144 :デフォルトの名無しさん:04/12/21 21:38:49
強制IDまだ~?と言ってみるテスト。

>>140
>いろんなプロジェクトが進んでるみたい
公開されているのがほとんどです。(ScrapBookとかMoz2chとか)
>Googlebarの検索語を全角空白で区切ってもちゃんと動作するようにしたの
是は簡単にできる気がします。

>>134
resourceという変数はDOMの(要素の)ノードが入っていますのでそれを入れればいいかと

145 :144:04/12/21 21:40:21
というかgetWindowForResourceからノード返せといっているのか。
window.document.getElementsByTagName("*")でいいかと

146 :デフォルトの名無しさん:04/12/21 21:56:09
>>145
多分違う。

147 :144:04/12/21 21:58:58
いや、>>132のやりたい事

148 :デフォルトの名無しさん:04/12/21 21:58:59
>resourceという変数はDOMの(要素の)ノードが入っています
そもそもこれが間違い

149 :144:04/12/21 22:00:05
あ…
属性ノードの間違いorz
スマソ

150 :デフォルトの名無しさん:04/12/21 22:03:27
混沌としてきたなぁ。
もしDOMの話をしてるんだったら、属性じゃなくて、要素のID属性だから、
それでいいんだけど、多分、>>132のやりたいことは
コンテナからRDFResouceを直に取り出すことじゃないかな。

151 :デフォルトの名無しさん:04/12/21 22:04:08
んでリファレンス見たら単にID渡せば良いだけという罠

152 :デフォルトの名無しさん:04/12/21 22:06:40
とりあえず、>>134 は勘違いをしている確立が高いと。
何をしたいかがわからないと答えようがないなぁ

153 :132:04/12/21 22:13:37
皆さん、すいません。
IDを渡せばいいってのは分かるんですが、Window Mediatorデータソースから
直接getWindowForResourceの引数に使う値を取り出したいのです。

154 :デフォルトの名無しさん:04/12/21 22:31:14
データソースってとこ良く分からんがWindow MediatorはXPCOMをインスタンス化しただけだから引数に使う値はない。
#ウインドウ一覧が欲しいという事なのかな
#もうちょっと具体的にお願いします。

155 :デフォルトの名無しさん:04/12/21 22:37:47
>>154
>>139-142

156 :デフォルトの名無しさん:04/12/21 22:38:46
>>154
http://xulplanet.com/references/xpcomref/comps/c_rdfdatasource1namewindowmediator.html
このコンポーネントを使用してるのですが

>ウインドウ一覧が欲しいという事なのかな
はい、とりあえずそうです。

157 :デフォルトの名無しさん:04/12/21 22:40:27
んでID付けたくない理由は?

158 :デフォルトの名無しさん:04/12/21 22:44:42
というかRDFの奴が一通り使えるしRDFについて学ぶのが良いと思う。
でも単純なリストではないって事???

159 :デフォルトの名無しさん:04/12/21 22:45:27
データソースから取り出すには、コンテナを初期化して、
Enumeratorを回すのが定石。
でも、ウィンドウのリストがほしいだけだったら、mediatorでも出来る上に
どっちみちSimpleEnumeratorの説明をしなくちゃならんから、
遠回りしてるだけなんだよ。

だから、情報を小出しにすんな、って言われてるでしょ?

160 :デフォルトの名無しさん:04/12/21 22:47:12
>>156
頼むから、getEnumeratorを使ってくれ。
RDFは、もうちょっと知識が身に付いたあとでも遅くないから。

161 :デフォルトの名無しさん:04/12/21 22:50:10
>>115-116
実は2分で結論が出てることを、ここまで引っ張ってきてるわけだ…

162 :132:04/12/21 23:06:26
いや、単純にウィンドウのリストを取得するだけなら分かりますし、できるんですが。
ていうか、説明が難しい上にスレも荒れるので、自力で解決したいと思います・・
今後自分に対するレスはもう不要です、いやほんとに。

163 :デフォルトの名無しさん:04/12/21 23:10:29
やり方 http://wiki.fdiary.net/xul/ に書いてきた

164 :デフォルトの名無しさん:04/12/23 11:24:59
ところで、>>132 さんが使おうとしているgetWindowForResourceって使えます?

Components.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


165 :デフォルトの名無しさん:04/12/23 13:04:35
>>164
>>66
http://www.xulplanet.com/references/xpcomref/ifaces/nsIWindowDataSource.html

166 :デフォルトの名無しさん:04/12/24 05:27:02
厨房もじらーさんってまだ生きてるのかな?(・∀・)

167 :デフォルトの名無しさん:04/12/24 12:41:37
>>166
メールでも送ってみたら?

168 :デフォルトの名無しさん:04/12/26 21:44:00
こんな事できたのか。。おれてきメモ。
var docroot = window.content.document.documentElement
docroot.innerHTML += '<p id="hoge">hoge</p>'
window.content.document.getElementById("hoge")
//もうひとつ
var doc = document.implementation.createDocument("","html",null)
var range = doc.createRange();
range.selectNodeContents(doc.documentElement);
range.collapse(true);
var cf = range.createContextualFragment(htmlcontent)
doc.documentElement.appendChild(cf)
var serializer = new XMLSerializer();
var xml = serializer.serializeToString(doc);
これで、htmlも簡単にxmlに変換できるのね。

169 :デフォルトの名無しさん:04/12/31 12:46:05
テキストファイルの文字コードの自動認識する方法ってありますか?

170 :デフォルトの名無しさん:04/12/31 17:41:00
>>169
あるよ

171 :デフォルトの名無しさん:04/12/31 18:37:24
ウィンドウにフォーカスがあるか調べるメソッドかなんかあります?

172 :デフォルトの名無しさん:04/12/31 18:44:04
自己解決しますた。

173 :デフォルトの名無しさん:04/12/31 19:04:51
>>170
どのようにすれば自動認識できますか?

174 :デフォルトの名無しさん:04/12/31 19:08:22
自動認識はできないんじゃ?
確かflyson氏のページに日本語の文字コードを簡易的に識別する関数があったが…

175 :デフォルトの名無しさん:04/12/31 21:04:18
>>173
他のプログラム言語で書かれた判定式を移植
#Mozilla内部にもあるはずだけどJSからは使えないはず

176 :デフォルトの名無しさん:04/12/31 23:08:31
>>22の拡張を入れたらフロントエンドからアンインストールしても「次回の起動時に削除されます」
とか書かれて再起動しても消えてくれない・・・・
とりあえず手動で消すにはどうしたらいいですかね

177 :デフォルトの名無しさん:04/12/31 23:13:22
プロセスが残ってない?
Winならタスクマネージャで調べてみて。

178 :デフォルトの名無しさん:05/01/01 00:10:49
>>177
プロセスで殺しても無理でした。ついでにPCごと再起動しても無理です・・・

179 :デフォルトの名無しさん:05/01/01 00:14:28
extension.rdfあたりを手動でいじればいいんじゃ?

180 :デフォルトの名無しさん:05/01/02 05:37:34
nsIRequestObserverのonStopRequestで、statusCodeに2147500033という数値が返ってきました。
この数値の意味を知る方法はありますか?

181 :デフォルトの名無しさん:05/01/02 08:32:13
それは、NS_ERROR_NOT_IMPLEMENTEDだな。
idlでは定義されてるんだが、実装を書かないとそうなる。

182 :デフォルトの名無しさん:05/01/02 08:35:05
>>66の例でいくと、「握手しようとしたら、空振り」エラーだ。

183 :デフォルトの名無しさん:05/01/02 10:14:40
握手に失敗しても空振りとは言わんな
むしろ空手形とかそんなんだろ

184 :デフォルトの名無しさん:05/01/02 22:29:41
空手形もおかしい

185 :デフォルトの名無しさん:05/01/03 22:20:51
ページ読み込み完了時に処理させたいのですが、どのようにしたらいいでしょうか?
mTabBox.addEventListener("load", test, true);
現在このようにやってますが、これでは早すぎます。

186 :デフォルトの名無しさん:05/01/03 22:29:54
>>185
mTabBox.addEventListener("load", test, false);
でいかがでしょうか? (>>111-114 参照)

187 :デフォルトの名無しさん:05/01/03 22:33:01
>>186
ありがとうございます。
それも試しましたが、それだとうまく"完了時"に取得できないようです。
他の方法があればよいのですが・・・

188 :デフォルトの名無しさん:05/01/04 02:04:40
nsITreeViewを自分で実装したツリーで、setCellTextしてもすぐにはツリーセルのテキストが変わらず、
なぜかそのセルを選択状態にすると変更が反映されます。
これをどうにかすぐに反映させるようにできないでしょうか?

189 :188:05/01/05 23:54:27
自己解決というか実装の仕方を変えたので質問を取り下げます。

190 :デフォルトの名無しさん:05/01/08 12:16:32
firefoxの拡張機能で、インストール時に独自の設定ファイルを作る方法ってあります?

191 :デフォルトの名無しさん:05/01/08 13:19:32
デフォルト設定を*.jsで定義したいという話なら、
だとしたら、しかるべきパスにしかるべきファイルを置いて
*.xpiに含めればいいと思う。

192 :190:05/01/08 17:55:27
>>191
defaults/preferences/*.js ではなくて、独自の「ファイル」の方法ってことです。

で、さっき気が付いたんだが、 *.xpi の中に setting.xml とか置いておけば、インストール時に
%ProfD%/extensions/{extension-uuid}/setting.xml
に展開されるから独自の設定ファイルを置けることがわかったので、解決しました。

が、これだとアップデート時にもsetting.xmlが上書きされてしまうという問題点がうまれてしまいました。


193 :デフォルトの名無しさん:05/01/08 18:36:29
>>192
> defaults/preferences/*.js ではなくて、独自の「ファイル」の方法ってことです。

そういうポリシーになってないと思う。


194 :デフォルトの名無しさん:05/01/08 19:17:09
>>192
xpiにあらかじめ設定ファイルを含めるのではなく、初回起動時に生成できればいいよね。
アップデート時は設定ファイルの存在を判定して、あればそのまま使うように。

195 :デフォルトの名無しさん:05/01/08 20:02:27
nsIPrefServiceに任意のファイルに設定を出力する機能があったと思うけど、
これは特定のブランチ以下だけを吐くとかできるのかな?
無理なら、TbEみたいに自力で実装するしかないかと。


196 :190:05/01/09 12:06:31
やっぱり起動するときに、設定ファイルを捜したり作ったりする処理が必要なのか…。
皆さん、ありがとうございました。

197 :デフォルトの名無しさん:05/01/12 02:03:26
Mozillaのインクルードディレクトリ、
あちこちに散らばってるのですが全部手動で指定するのはダルイです。
皆さんどうやって対応しているのですか?

#include "xpcom/xxxx.h"
みたいにしてます?

198 :デフォルトの名無しさん:05/01/12 02:19:51
拡張の多言語版の配布方法で困っています。

ある拡張の公式なバージョン(例えばen-USとja-JP)とは別にローカライズ版(例えばde-DE)が存在するとき、
ローカライズ版をインストールしたドイツ人のユーザが拡張の更新ボタンを使って公式バージョンの最新版へ
アップデートすると、ロケールに食い違いが生じて赤字のXULエラーが出てしまうという問題があるようです。

このような場合、ローカライズ版を一度インストールした人は今後ずっとローカライズ版がアップデートされるのを
待つように注意を促すしかないのでしょうか?

199 :デフォルトの名無しさん:05/01/12 03:13:45
それしかないと思う。現状のExtensionManagerでは対策のしようがないので。

あと、ローカライズ版作成者の人に
ローカライズ版専用の自前の更新情報を提供してくれるよう
協力を呼びかけるくらいだろうか。


200 :デフォルトの名無しさん:05/01/12 03:28:50
ありがとうございます。やはりそうですか…。
ローカライズ版作者にupdate.rdfを作ってもらうという方向でいきます。
しかし不要なトラブルを避けるためにいっそ自分で全ロケールを管理した方がマシのような気もしてきました。

201 :デフォルトの名無しさん:05/01/12 12:42:06
それが妥当だと思うなあ。 > 自分で全部管理
手数は増えるけど。UNIXのソフトは普通そうだよね。
リリースが近くなったらアナウンスして翻訳してもらって。



202 :デフォルトの名無しさん:05/01/12 20:22:28
XULのwikiに拡張の説明のローカライズの仕方書いてきた。(って言ってもコピペだけど)
#んで書いてみて、何か物凄い面倒なことしてるな>俺って思ったのは気のせい。

>>200
全部自分で管理、新たな文が必要になった所は英語で補完しとけば良いと思う。

203 :デフォルトの名無しさん:05/01/17 06:28:07
XUL開発のために今までずっとnglayout.debug.disable_xul_cacheをtrueにしてたけど、
久々にfalseにしたらFirefoxが驚くほど軽快に。デバッグするときと普段とでいちいち値を
切り替えるのは面倒だけど。

204 :デフォルトの名無しさん:05/01/19 00:13:03
HTMLの文字列をDOM treeに変換したいときは、どうするのがベストでしょうか。
空のHTMLDocumentを作って、innerHTMLに入れるのかと
思ったんだけど、document.implementation.createDocumentで作られるのは
XMLDocument…。

205 :デフォルトの名無しさん:05/01/19 07:27:41
DOMParserは?

206 :デフォルトの名無しさん:05/01/19 14:06:53
>>205
DOMParserはXMLのパースしかできなかったと思われ。

207 :デフォルトの名無しさん:05/01/19 19:24:47
http://firefox.geckodev.org/?%B3%C8%C4%A5%A4%CE%BA%EE%C0%AE
のHello worldチュートリアルを見てコンテキストメニューとツールのとこに
メニューを追加する方法はわかったのですが、
タブの右クリックメニューのところにはどうやって追加するのでしょうか?
難しいんですか?

208 :デフォルトの名無しさん:05/01/19 19:34:15
>>207
簡単ですよ

209 :207:05/01/20 20:24:58
>>208
toolkit.jarを書き変えれば確かに簡単だけど、
自分の拡張からだとXBLとかいうのを書くみたいでちょっと初心者には無理ですね。
来年がんばります。

210 :208:05/01/20 20:42:48
>>209
勘違い?
#オーバーレイを使えば肝胆なのに

211 :デフォルトの名無しさん:05/01/21 01:00:23
確かにタブのコンテクストメニューってidで一意に定められているわけじゃなく、
XBLで各タブごとに存在するという感じだから、例えばcontentAreaContextMenuにオーバーレイ
するみたいに一筋縄ではいかない気がするな。

212 :208:05/01/21 18:34:13
よく調べないで書き込んでスマソ。
#でもXBLもそんなに難しくない気がするけど…

213 :デフォルトの名無しさん:05/01/30 19:30:13
>>211
XBLはCSSに入ってるから、オーバーレイっていうよりカスケーディングだな。
CSSはオーバーレイされてるんだけどね。
根本的な考え方は一緒、というかむしろカスケーディングの方が
なじみがあるだろう。

214 :デフォルトの名無しさん:05/02/02 03:47:44
http://xul-app.hp.infoseek.co.jp/xultu-janit/datasrc.html
ここの6.7.2のファイルブラウザーが何も表示されませんが、何か間違っていますでしょうか?
treecolsが無いのはおかしいと思い追加してみたが、それでもダメでした。

215 :デフォルトの名無しさん:05/02/02 19:19:12
そのサンプルが古いからです。
>2002 年 3 月 16 日記。このページの更新は、もはや、ありません。
>後を継いで頂ける方がありましたら、ここでのこれまでの翻訳を、ご自分のサイトに移して、このサイトの翻訳が停止した後の差分を訳すなり、一から訳し直すなりの措置をお取り頂ければ幸いです。
>私の連絡は不要です。このページは、4 月末までに廃止されます。

216 :デフォルトの名無しさん:05/02/03 02:40:57
現在の仕様では、旧treeウィジェットはなくなって、
その資料でoutlinerとなっているものがそのまま名称変更されて
treeとして実装されています。


217 :デフォルトの名無しさん:05/02/03 21:56:19
>>215-216
ありがとうございました。
もう一度考えてきます。

218 :デフォルトの名無しさん:05/02/07 20:16:11
これ結構楽しいかも。
JSDoc
http://jsdoc.sourceforge.net/

219 :デフォルトの名無しさん:05/02/07 21:48:17
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Perl

220 :デフォルトの名無しさん:05/02/07 22:06:13
>>219
Python と HSP を忘れてるぞ。

……って Ruby スレじゃないじゃん。ここ。

221 :デフォルトの名無しさん:05/02/10 07:31:13
すいません、RDFとTemplateに絡んで質問なんですが、

<rdf:Description rdf:about="...">
<my:property rdf:parseType="Literal"><html:em>はろー</html:em>ぐっど<html:br />もーにんぐ</my:property>
</rdf:Description>

というふうにparseType="Literal"である目的語の値をそのままテンプレートに使うのにはどうしたらいいんでしょうか。
ためしに以下のようにやってみましたが、(&my;は名前空間URIに展開される)

<rule>
<conditions>
...
<triple subject="..." predicate="&my;property" object="?object" />
</conditions>
<action>
<html:p uri="..."><textnode value="?object" /></html:p>
</action>
</rule>

以下のような結果になってしまいました。

<html:p>rdf:#$R1O4A1</html:p>

ほしい結果は以下のとおりです。

<html:p><html:em>はろー</html:em>ぐっど<html:br />もーにんぐ</html:p>

何とかテンプレート関連要素を使ってやる方法はないのでしょうか?
それともこういう場合はスクリプトで処理していかなくてはならないのでしょうか?
# 関係ないけどXUL/Migemoはすごいですね。
# "parseType"で検索したら「パース型」まで引っかかりましたよ。

222 :デフォルトの名無しさん:05/02/11 08:16:38
sidebarBox = document.getElementById("sidebar-box");
みたいな感じでGUIの部品への参照を取得してるみたいなのですが
引数として与えられる文字列と取得できる部品の対応表とメンバ一覧みたいのはありますか?

223 :デフォルトの名無しさん:05/02/11 11:07:44
>>222
domi

224 :デフォルトの名無しさん:05/02/12 15:54:12
>>221
> http://lxr.mozilla.org/mozilla/source/rdf/base/src/nsRDFContentSink.cpp
>
> This code is based on the final W3C Recommendation,
> http://www.w3.org/TR/1999/REC-rdf-syntax-19990222.

moz の実装してるRDFの仕様は少し古いので

> 2) We don't support the `parseType' attribute on the Description
> tag; therefore, it is impossible to "inline" raw XML in this
> implemenation.

perseType="Leteral" 属性は使えない、XML 断片を含ませることができない。
だそうだけど...何か方法あるのかな。

225 :デフォルトの名無しさん:05/02/12 20:36:58
まずはbugzillaでvoteするべし

226 :221:05/02/16 01:52:59
>>224
おおっ、ありがと。ってサポートされてないのね。残念。
仕方ないからテンプレート使わず単なるXMLとみなして
DOMでひとつずつ取り出すかXSLTで一気に変換するかします。

ちなみにBugzillaで探したら

Bug 33197 - no support for parseType="Resource|Literal"
https://bugzilla.mozilla.org/show_bug.cgi?id=33197

RESOLVED/FIXEDになってる!?
どうやらNC:parseType (意味的にはrdf:datatypeに相当?)が実装されたときに
FIXEDにされたらしいですが……どうなってるんでしょ?

227 :デフォルトの名無しさん:05/02/16 10:55:42
>>226
Bug 33197 の修正元
Bug 118865 - Asserting an rdf int literal writes malformed xml
https://bugzilla.mozilla.org/show_bug.cgi?id=118865
のパッチ
https://bugzilla.mozilla.org/attachment.cgi?id=64400
をみても、NC:parseType="Interger" と NC:parseType="Date"
しか実装されてないように見える。Bug 33197 はきちんと直ってないんじゃないかなぁ。

テンプレートじゃなくてスクリプトで、nsIRDFService.GetLiteral 使う場合は
できるのかも。試してないからわからんけど。

228 :デフォルトの名無しさん:05/02/20 11:14:04
contents.rdfが廃止
http://slashdot.jp/journal.pl?op=display&uid=15295&id=282407

229 :デフォルトの名無しさん:05/02/20 22:01:54
どういった利点が?

230 :デフォルトの名無しさん:05/02/20 22:37:20
簡単に拡張を作成できるようにしました。
http://nazodane.hp.infoseek.co.jp/extension/xuld.xhtml
ツール>拡張の作成で作成できます。
まだあまりテストしてなかったり、ロケールがen-USのみ固定だったりするので人柱募集。

231 :デフォルトの名無しさん:05/02/20 23:29:18
>>230
GJ!
これで生成できるGUIDって正式なやつなんでしょうか?


232 :デフォルトの名無しさん:05/02/21 09:24:59
RDFデータソースの操作で参考になる拡張は何ですか?

233 :デフォルトの名無しさん:05/02/21 16:36:31
>>231
guidのwindowsでの正式な出し方はadvapi32.dllを使うのでどうしようもありません。
またunixではランダムデバイスを使っているようです。

ようはランダムであれば良い訳で別にMath.randomでも問題なさげと判断しました。(内部処理までは確認してません。)

234 :デフォルトの名無しさん:05/02/21 19:47:39
>>233
でも、なるべく衝突しないようにしなきゃいけないわけで。

235 :デフォルトの名無しさん:05/02/21 20:08:03
GUIDは全部をランダムに取るわけじゃないよ。
それなりに人によって使う領域が違ってくるように考えられている。
計算の仕方というのがあるのできちんとやるように。


236 :デフォルトの名無しさん:05/02/21 20:25:31
あーデバイスから求めてる訳か。
JSの実装がどうなってるか確認してみます。

237 :デフォルトの名無しさん:05/02/21 20:26:21
>>235
角度とか?

つか、偉そうなこと言うんだったらもうちっと具体的なこと言えばいいのに(笑)

238 :デフォルトの名無しさん:05/02/21 20:39:20
ダメっぽいな…
XPCOMあさってみます。

239 :デフォルトの名無しさん:05/02/21 20:45:06
crypto.random();が実装されてないorz

240 :デフォルトの名無しさん:05/02/21 20:53:08
>>237
DCE 1.1 RPC Specificationを読め。


241 :デフォルトの名無しさん:05/02/21 21:06:11
uuid=guidでいいんだよね
http://lxr.mozilla.org/mozilla/source/calendar/libxpical/token.c
是見るとやっぱり時間で求めてるorz

他の所も
>"uuid" + (new Date()).getTime();
な感じで無理っぽいなorz

242 :デフォルトの名無しさん:05/02/21 21:26:29
>>240
uuidって仕様あったんだ
某所で聞いた時誰も答えてくれなかったorz

243 :デフォルトの名無しさん:05/02/22 00:04:37
http://nazodane.hp.infoseek.co.jp/uploader/xuld_v0.3.2+.xpi

GUIDを修正してみた。
ただしvbs関係でエラーが出たりウイルスチェッカーが引っかかったりする可能性大。
Cドライブ以外にプロファイルがある時は上手く動作しない。

244 :DCE:05/02/23 00:21:46
http://www.mozilla-japan.org/projects/firefox/extensions/packaging/themes.html
uuidgen / guidgen で調べろ。

245 :243:05/02/24 16:45:55
添付フォルダを使うようにしました。
これでwindows上では問題なし。

>>244
で?

246 :デフォルトの名無しさん:05/02/24 17:30:12
>>244
そのツールって内部から呼べて、さらに値返ってくるの?ってことでしょ

>>245
手動の計算方法は*BSDのソース見たときに載ってた気がする
まぁ計算方法は何とでもなるだろうけど、問題は機種固有数値の取得か
あれって確かMACアドレス取ってるんだっけ?

# Windows系だけでOKなら、現行の仕様で問題無さそうだけど

247 :デフォルトの名無しさん:05/02/24 17:35:59
windowsではvbsでScriptlet.Typelibを使うようにしたので問題ないです。
linuxでは/dev/urandomや/dev/randomを読み込むだけでよさげだけど環境が無いので対応は後回し。

248 :デフォルトの名無しさん:05/02/24 17:52:37
>>246
> 手動の計算方法は*BSDのソース見たときに載ってた気がする
> まぁ計算方法は何とでもなるだろうけど、問題は機種固有数値の取得か
> あれって確かMACアドレス取ってるんだっけ?

そう。DCEのSpecの"UUID Format"ってとこに書いてある。
要するにMACアドレスが(建前としては)一意性を保証されてるってことと
時刻を利用して理論的には一意な数値を叩き出す。
MACアドレスが尽きたらどうするんだろうというのは昔から謎。


249 :デフォルトの名無しさん:05/02/24 17:54:16
xul+javascriptでデータベースアプリケーションは作れマツか?
その1は落ちていて読めていません。

250 :デフォルトの名無しさん:05/02/24 18:32:10
>>249
とりあえずその1
http://makimo.to/cgi-bin/html2dat/html2dat.cgi?pc5_tech/1019/1019704370.html

データアプリケーションは作れなくも無いけど、読み込みスピードの問題が発生してくるかも。

251 :デフォルトの名無しさん:05/02/24 18:48:53
こんなのあったりもします
http://jsdb.sourceforge.net/index.html

252 :sage:05/02/25 05:54:21
> 250, 251
ありがとうございます。
既存のDBを使いたかったら、PHPとかサーバサイドでその処理を行い、
xul+jsはフロントエンドとして使う、ということですね。
flexとかと同じですね。

253 :252:05/02/25 05:55:15
sageのいれどころ間違いました。すいません。

254 :デフォルトの名無しさん:05/02/25 08:59:39
一瞬ThunderbirdにSageのXPI突っ込んじゃったのかと思っちゃったじゃないか

255 :デフォルトの名無しさん:05/03/03 08:04:06
ナイトリービルドではXUL(JavaScript)の仕様もあちこち変わってきているように見受けられますが、
そういった細かい仕様変更やバグフィックスなどに関する情報はどこで手に入れることができますでしょうか?

256 :デフォルトの名無しさん:05/03/03 17:09:38
>>255
mozillaのwikiに載ってるよ。

ちなみに>>228はxulrunnerでしか関係ないと思われ

257 :デフォルトの名無しさん:05/03/03 19:55:19
xulrunner結構いいけど是と言って作る物が思いつかないorz

258 :デフォルトの名無しさん:05/03/03 21:16:35
サイドバーにテキストボックスを1つ配置したとして、
その内容(value)を閉じても保持するにはどういう方法がありますか?
要はスタティックな変数が確保できればいいんですけど、

function hoge(){};
hoge.prototype = {
 load: function(){
  var hogeside = document.getElementById("hogeSidebar");
  hogeside.value = ++hoge.prototype.count;
 },
 count:0
}
var hogehoge = new hoge();

例えば上のようなコードで、サイドバーを開く度にcountをインクリメントして表示だと、
どういう風に書けばいいでしょうか。
(上の例では毎回1が表示される)

259 :258:05/03/03 21:21:48
ああ何か違う_no
countを〜じゃなくて、テキストボックスのvalueをインクリメントして〜、です

260 :デフォルトの名無しさん:05/03/03 21:28:25
preferencesに保持するのが一般的と思われ

261 :260:05/03/03 21:30:20
http://xulplanet.com/references/xpcomref/ifaces/nsIPrefBranch.html

262 :258:05/03/03 21:49:32
>>260-261
ありがとうございます。
ただ、例なので単純に数値のインクリメントにしてみたんですけど、
実際はテキストボックスでなくツリーで、
ツリー内の状態を保持しようと考えてます。
その場合もやっぱりpreferencesしか手はないでしょうか?

263 :デフォルトの名無しさん:05/03/03 21:56:33
>>262
それだったらrdf

264 :デフォルトの名無しさん:05/03/03 22:50:03
http://xulplanet.com/tutorials/xultu/persist.html

265 :デフォルトの名無しさん:05/03/05 00:16:24
斜め読みで適当に書いてるんで、間違ってても知りませんよ。
ttp://piro.sakura.ne.jp/latest/2005/03.html#d5-A7F7BD1E-1


266 :デフォルトの名無しさん:05/03/05 01:12:36
>>265
乙です。
chrome.manifestはinstalled-chrome.txtの記述にさらにcontents.rdfのoverlayの記述を加えたような感じですね。
XMLではないので読み書きしやすいので、こちらの方がよさげな気がします。
ただ、今までinstall.rdfで登録していた拡張の名前やバージョン、アップデートURLなどの情報はどうなるのだろうか。

267 :デフォルトの名無しさん:05/03/05 01:55:04
ほんとだね。どうなるんだろ

268 :デフォルトの名無しさん:05/03/05 12:18:13
>>266
いや変わらないでしょ
>install.rdfと
って所はただのミスでしょ
一箇所にまとめるのもいいと思うしスピードを上げるのもいいけどRDFの採用を減らすのはどうかと思うな…

269 :デフォルトの名無しさん:05/03/05 13:28:13
んで疑問なのはmanifestの置く場所がxulrunner(というかアプリケーション側)と違う事。(アプリケーション側はchromeフォルダ内)

270 :デフォルトの名無しさん:05/03/07 20:05:14
windowsでfirefoxのtrunkを使っているのですが
window.open("chrome://*",null,"chrome,alwaysRaised");
が聞かない様な気がするのですがどうすればいいのでしょうか?

271 :デフォルトの名無しさん:05/03/07 20:55:51
便利でメジャーなプラグインを自動で検索してインストールするプラグインキボン

272 :270:05/03/07 21:08:00
親のzLevelが設定されてないとだめなのかなぁ…

>>271
窓の社(not 杜)の中の人乙

273 :デフォルトの名無しさん:05/03/07 21:21:32
ウィンドウの内部名はなんでnullになってるの?

274 :デフォルトの名無しさん:05/03/07 21:28:45
>>273
'_blank'になおしますた。
それと上手くいったけどtopmostっていってもfirefox内だけなのねorz

275 :デフォルトの名無しさん:05/03/08 00:14:10
システムに対してtopmostにできるとフィッシングに使う馬鹿が出るから仕方ない
と言っても特権持ったXULアプリならできても良さそうなもんだがな

276 :デフォルトの名無しさん:05/03/08 01:32:07
Win32API呼ぶ方法ってありますか?

277 :デフォルトの名無しさん:05/03/08 23:47:16
rundll32.exe使うとかどうよ

278 :デフォルトの名無しさん:05/03/09 22:15:18
そんなんじゃIEには勝てないな

279 :デフォルトの名無しさん:05/03/09 22:32:56
>>278
ええ、確かにIE+ASP.NETとは比べ物になりませんよ
やりようによってはウイルスだってハードディスク丸ごとフォーマットだってできちゃうXULに勝ち目はありません。

280 :デフォルトの名無しさん:05/03/10 16:41:17
nsIViewManagerでサムネイルが出力できるようになったのはいいんだけど(set MOZ_FORCE_PAINT_AFTER_ONLOAD=c:\tmp\test)、xpcom側から使えないのがなぁ…
是使えればもっと色々なことできそうなのに…
誰かパッチ書いてくれないかなぁ(他人任せ)

281 :デフォルトの名無しさん:05/03/10 23:37:03
武熊をサムネイルで整理とかできたらおもしれえかもな。

282 :デフォルトの名無しさん:05/03/13 08:09:28
ブラウザが持っているダイアログ(ブックマークに追加、など)を呼び出して、通常と違う動作をさせるにはどうしたらいいんでしょうか?
通常呼び出される場合には手を加えず、特殊な場合だけ動作を変えたいのです。

283 :デフォルトの名無しさん:05/03/13 10:14:17
引数を渡してウィンドウを開く


284 :デフォルトの名無しさん:05/03/13 11:11:35
>>282 <dialog id="****">を overley すれば?
overley の js で通常と特殊を振り分ければできるっしょ。

285 :282:05/03/13 16:27:28
なるほど。ありがとうございます。

286 :デフォルトの名無しさん:05/03/14 18:14:21
>>275
chrome内ならできるようにして欲しいなぁ。
でないとランチャーや時計みたいな小物アプリが…

287 :デフォルトの名無しさん:05/03/14 18:49:13
Flasherって何?inIFlasher
ウンコモラッシャー!

288 :デフォルトの名無しさん:05/03/15 11:48:20
>>287
inIだからDOMiの為の何か。

289 :デフォルトの名無しさん:05/03/18 00:17:59
すいません。今、XULでMozillaのToolbarを作っています。

ツールバーでアイコンとアイコンの間に仕切り線を入れたいのですがどうしたらいいのでしょうか?

デフォルトであるブックマークのツールバーの「ホーム」と「ブックマーク」の間にある仕切り線みたいなのが良いです。
よろしくお願いします。

290 :デフォルトの名無しさん:05/03/18 00:43:15
>>289
separatorかと思ったけど、
これだったらちょっと検索しただけで分かるよね
他の何かかな?

291 :デフォルトの名無しさん:05/03/19 08:48:41
DOMインスペクタ使ってる?

292 :デフォルトの名無しさん:05/03/19 23:33:07
ドロップダウンリスト関連の質問です。

リストのラベルをJavaScriptで作成した変数(配列変数)を使いたいんですか
どうすればいいんでしょうか。

具体的には以下の通りです。

293 :291:05/03/19 23:33:51
<script type="application/x-javascript">
<![CDATA[
teArray = new Array();
n = 0;
while (n<5) {
teArray[n] = n + "番目";
n++;
}
]]>
</script>

<menulist>
<menupopup>
<menuitem label="≪teArray[1]を使いたい≫" oncommand="sk1()"/>
<menuitem label="≪teArray[2]を使いたい≫" oncommand="sk2()"/>
<menuitem label="≪teArray[3]を使いたい≫" oncommand="sk3()"/>
<menuitem label="≪teArray[4]を使いたい≫" oncommand="sk4()"/>
<menuitem label="≪teArray[5]を使いたい≫" oncommand="sk5()"/>
</menupopup>
</menulist>

294 :デフォルトの名無しさん:05/03/19 23:46:18
>>293
menuitem自体を動的に挿入汁

295 :291:05/03/19 23:51:29
>>294
それはどのように行えばよいのでしょうか?
具体的に、丁寧な説明をお願いします。

296 :292:05/03/19 23:52:59
>>293
>>295
すいません。名前の欄を間違えました。「292」です。

297 :デフォルトの名無しさん:05/03/19 23:54:54
もう少しjavascriptを勉強したら?

298 :デフォルトの名無しさん:05/03/19 23:55:07
>>292
menupopupにID付けといて、
var mi = document.getElementById("mp").firstChild;
while(n<5){
teArray[n] = n + "番目";
mi.label = teArray[n];
mi = mi.nextSibling;
n++;
}
みたいにすればいいんじゃ?
ただしonloadなどで実行してね。

299 :デフォルトの名無しさん:05/03/19 23:57:13
もっとも、俺なら294のように動的に要素を生成して挿入するね。

300 :292:05/03/20 14:12:49
>>298
ありがとうございます。早速やってみたのですが・・・、クリックしてもリスト(アイテム)が出てきません。
以下のスクリプトで実行しました。どこに問題があるか教えていただけると幸いです。

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window
title="XUL"
onload="ttt01()"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript">
<![CDATA[
function ttt01() {
teArray = new Array();
var mi = document.getElementById("mp").firstChild;
while(n<5){
teArray[n] = n + "番目";
mi.label = teArray[n];
mi = mi.nextSibling;
n++;
}
}
]]>
</script>
<menulist>
<menupopup id="mi">
</menupopup>
</menulist>
</window>

301 :デフォルトの名無しさん:05/03/20 15:19:18
>>300
menupopupのchildNodesが見あたりませんが……それじゃ動くはずないって。

皆さんが言ってるのは、

<script type="application/x-javascript">
<![CDATA[
function ttt01() {
teArray = new Array();
var mi = document.getElementById("mi").firstChild;
while(n<5){
teArray[n] = n + "番目";
mi.label = teArray[n];
mi = mi.nextSibling;
n++;
}
}
]]>

<menulist>
<menupopup id="mi">
<menuitem oncommand="sk1()"/>
<menuitem oncommand="sk2()"/>
<menuitem oncommand="sk3()"/>
<menuitem oncommand="sk4()"/>
<menuitem oncommand="sk5()"/>
</menupopup>
</menulist>

とするか、


302 :デフォルトの名無しさん:05/03/20 15:22:55
(続き)

<script type="application/x-javascript">
<![CDATA[
function ttt01() {
var menulist = document.getElementById("ml");
for(var n= = 1; n < 6; i++){
mpopup.appendItem(n + "番目").setAttribute("oncommand", "sk"+n+"()");
}
}
]]>

<menulist id="ml"/>

とするか、ってことです。


303 :デフォルトの名無しさん:05/03/20 15:27:25
>302のコード間違えたorz

<script type="application/x-javascript">
<![CDATA[
function ttt01() {
var menulist = document.getElementById("ml");
for(var n= = 1; n < 6; i++){
menulist.appendItem(n + "番目").setAttribute("oncommand", "sk"+n+"()");
}
}
]]>

<menulist id="ml"/>

が正解。

とりあえずDOM(Document Object Model)の基本を勉強した方がいい気がする。
http://moz.skillup.jp/docs/dom/reference/javascript.html
http://www.mozilla.gr.jp/jt/xul/progress.html
http://www.parkcity.ne.jp/~chaichan/src/javascdom00.htm
このへんとかどうかな。

304 :デフォルトの名無しさん:05/03/20 18:45:25
すいません、画像の整理がしやすいように、"今自分の指定した規則のファイル名"で、ファイル保存する拡張を作りたいのですが
contentAreaUtil.js内部の
saveURL()

saveInternal()
と関数を追っていったところ、その関数の最後の
var sniffer = new nsHeaderSniffer(aURL, foundHeaderInfo, data, aSkipPrompt);
の1行で躓いてしまいました、何方か、このクラスに関する資料や、(期待出来ないけど)saveInternal関数の詳細解説

ファイル保存時に、好きなファイル名を指定出来る方法等をご存じでしたら、お知恵をお願いいたします
単純に、aFileName引数に適当な名前を入れ込んでしまえば上手くいくと思ったら、綺麗に動いてくれなかった物で…
一応、作りかけ…、普通にファイル保存しか出来ません
http://www.geocities.co.jp/Playtown-Knight/9224/img_collect.zip


305 :デフォルトの名無しさん:05/03/20 20:44:41
「"今自分の指定した規則のファイル名"で、ファイル保存する」という意味がよくわからないけど、
そんな小難しいことやんなくても、nsIWebBrowserPersistのsaveURIで保存すればいいんじゃないの?
http://piro.sakura.ne.jp/xul/tips/x0015.html

306 :デフォルトの名無しさん:05/03/21 00:09:05
DOMインスペクタのようにノードを監視するにはどのようにすればよいでしょう?
DOMインスペクタのソースを一通り眺めてみたけど理解できずorz

307 :デフォルトの名無しさん:2005/03/21(月) 04:13:03
>>306
DOM Inspectorのソースは見てないがMutation Events用のリスナを登録してみるのはどうだろう。
ただしまともに実装されているのかは知らないが。
Mutation Events not created or dispatched for XML document that is loaded into memory but not rendered in a window/frame
https://bugzilla.mozilla.org/show_bug.cgi?id=201236

308 :デフォルトの名無しさん:2005/03/21(月) 05:44:17
DOMAttrChange(だったっけ)はとりあえず使えてます

309 :デフォルトの名無しさん:2005/03/21(月) 12:50:50
そもそもDOM Inspectorってどうやって監視してるんだ。

75 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)