Mozillaでプログラミング(XUL) その3 at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん
06/11/27 20:00:38
オラ拡張作る。

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

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

前スレ
Mozillaでプログラミング(XUL) その2
スレリンク(tech板)
姉妹スレ
Geckoベースのブラウザを作ろう
スレリンク(tech板)l50

参考サイト
Mozilla Developer Center
URLリンク(developer.mozilla.org)
XULPlanet
URLリンク(www.xulplanet.com)

過去スレ
Mozillaでプログラミング(XUL)
スレリンク(tech板)

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

2:デフォルトの名無しさん
06/11/27 20:11:57
ずるしてらくしてかれいに2げっとかしらかしら〜

3:デフォルトの名無しさん
06/11/27 22:45:42
XULはMozilla Corporationの商標だぞ
勝手に使うなよ

4:デフォルトの名無しさん
06/11/27 22:50:46
There is no data.
There is only xul.

5:デフォルトの名無しさん
06/11/27 23:30:50
>>3
商標についての知識が皆無のようだね。

6:デフォルトの名無しさん
06/11/28 08:52:48
XUL® でいいのか?

7:デフォルトの名無しさん
06/11/28 16:36:43
2chって™とか ™ って表示されないんだっけ?
♥は出るのにな

8:デフォルトの名無しさん
06/11/28 16:38:01
お 出るじゃんXUL™

9:デフォルトの名無しさん
06/12/01 14:56:41
そもそも>>3も勝手に使ってる件w

10:デフォルトの名無しさん
06/12/02 22:59:39
var foo.prototype = {
hoge: function foo_hoge(){
...
}
}
のような書き方をよく目にしますが、foo_hogeにはどういう意味があるのでしょうか?

11:デフォルトの名無しさん
06/12/02 23:59:19
foo_hogeでググれ

12:デフォルトの名無しさん
06/12/03 00:23:28
いや、
foo.prototype = {
hoge: function(){
...
}
};
ではなく、
foo.prototype = {
hoge: function foo_hoge(){
...
}
};
とすることに意味はあるのか、ということを知りたいのです。

13:デフォルトの名無しさん
06/12/03 02:28:12
デバッグがしやすくなる。
XPConnectに絡んだエラーが出たときとか、
関数名があればそれがエラーコンソールに出てくるから、
それを見ただけで大体の場所がわかる。

14:デフォルトの名無しさん
06/12/03 04:35:35
>>11
ちょっとワラタ

15:デフォルトの名無しさん
06/12/04 01:30:41
>11
思ったより検索結果が少ないことに驚いてるぜ俺。

16:デフォルトの名無しさん
06/12/06 17:16:32
XUL Tutorialを読んでXPCOMを試しているんですけど、エラーになって困ってます。
TutorialのXPCOMのページにある最初の例
var aFile = Components.classes["@mozilla.org/file/local;1"].createInstance();
if (afile) aFile.queryInterface(Components.interfaces.nsILocalFile);
を試しているんですけど、
Error: uncaught exception: Permission denied to get property UnnamedClass.classes
というエラーがでてしまい、先に進めません。
どうやら Compoments.classes というところでエラーになっているようです。
alert(Components.classes); // これでエラーになる
どなたかアドバイスお願いします。


17:デフォルトの名無しさん
06/12/06 17:27:14
すいません、ぐぐったら
URLリンク(www.xulplanet.com)
そのままありました。
しかし原因はわかりましたが、解決策がいまいちわかりません。
chromeにする、みたいなことがかいてあるんですが。どうするんだろ。

18:デフォルトの名無しさん
06/12/06 18:12:11
Mozillaでプログラミング(XUL) その2
スレリンク(tech板:952-956番)
952 名前:デフォルトの名無しさん 投稿日:2006/10/22(日) 22:35:33
user_pref("capability.principal.myapp.id","URLリンク(www.example.com));
user_pref("capability.principal.myapp.granted","UniversalXPConnect");

こんな感じでローカルファイルではなくて外部のURLにXPConnectの特権を与えることはできないのでしょうか?


953 名前:デフォルトの名無しさん 投稿日:2006/10/23(月) 13:39:48
>952
これはどう?
URLリンク(piro.sakura.ne.jp)

19:デフォルトの名無しさん
06/12/07 22:07:45
>>16

URLリンク(developer.mozilla.org)

を参考に、マニフェストファイルを作成して、適当なディレクトリを
chrome に登録する。

そこに、置いたファイルが chrome: で始まる URL でアクセスできたら、XPCOM の例は
確認できると思うけど、その前に、

URLリンク(piro.sakura.ne.jp)

を読んでおいた方が無用な苦労をしなくてすむかも。

20:17
06/12/08 01:13:34
>>18をヒントにいろいろ検索し、以下のようにすることでできるようになりました。
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
ただし、毎回確認ダイアログがでます。署名付きスクリプトにすればいいみたいですが、よくわかりません。
ローカルのxulファイルを実行しているときは、他のローカルファイルにもアクセスできてほしいんですけど、きっとそういうわけにはいかないんでしょうね。

それで、今度はnsILocalFileオブジェクトの使い方がわかりません。XULPlanetのXPCOMリファレンスを参考にしているのですが、エラーになります。
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var aFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
aFile.initWithPath('example.txt'); // ここでエラー

エラー内容は次のとおりです。
Error: uncaught exception: [Exception... "Component returned failure code: 0x80520001 (NS_ERROR_FILE_UNRECOGNIZED_PATH)
[nsILocalFile.initWithPath]" nsresult: "0x80520001
(NS_ERROR_FILE_UNRECOGNIZED_PATH)" location: "JS frame :: file://localhost/Users/wada/tmp/xul/tut1.xul :: test1 :: line 218" data: no]

UNRECOGNIZED_PATHだとあるんですけど、どういう意味でしょうか。もちろんexample.txtは存在します。
教えてくんで申し訳ありませんが、アドバイスいただけないでしょうか。


21:17
06/12/08 01:15:08
>>19
ああ、新しいレスがあったんですね。すみません。
今から読んでchromeとやらを勉強します。


22:デフォルトの名無しさん
06/12/08 01:17:59
>>20
ちゃんとnsILocalFileで検索したのかな?
XULPlanetのインターフェースリファレンスを見ればいいんだけど。

URLリンク(www.xulplanet.com)
Arguments:
filePath: A string which specifies a full file path to a location.

23:デフォルトの名無しさん
06/12/08 04:23:32
20>>
22>>
チュートリアルにも加えておきました。

そういや、
URLリンク(developer.mozilla.org)
にあるような特権の説明、XPCOMのセクションにも加えたほ方が良いのかな?

なんで、テンプレートにあるんだろうと思ったら、
昔はテンプレートの方が XPCOM より前のセクションだったみたいですね。

24:デフォルトの名無しさん
06/12/08 21:03:03
XPCOMで遊ぶならMCRでidl定義を見るのもいい方法だ
URLリンク(lxr.mozilla.org)

25:デフォルトの名無しさん
06/12/08 21:50:16
というかドキュメントが糞過ぎて見ないと分らない罠。

26:デフォルトの名無しさん
06/12/09 10:47:09
最終的にはソースを読むことになるんだけどな

27:デフォルトの名無しさん
06/12/10 16:27:45
そーっすね

28:デフォルトの名無しさん
06/12/11 16:44:13
>>1に追加すべき日本語の資料って

XUL Tutorial 日本語版
URLリンク(developer.mozilla.org)
XUL Wiki
URLリンク(wiki.fdiary.net)
XUL Apps > Tips&Technics - outsider reflex (やや古め?)
URLリンク(piro.sakura.ne.jp)

あたりかな?ほかになんかある?

29:デフォルトの名無しさん
06/12/11 18:42:29
XULアプリケーション作成入門
URLリンク(www.mozilla.gr.jp)

30:デフォルトの名無しさん
06/12/11 18:43:45
連投になってスマソ
Mozilla 資料 - コアアーキテクチャ: XUL
URLリンク(www.mozilla-japan.org)

31:デフォルトの名無しさん
06/12/13 18:52:01
Code snippets
URLリンク(developer.mozilla.org)

mozillaZineから移してるみたい
URLリンク(kb.mozillazine.org)

32:デフォルトの名無しさん
06/12/13 19:11:53
便利かもしれない開発ツール

○拡張○
Extension Developer's Extension
URLリンク(ted.mielczarek.org)
XPXOMViewer
URLリンク(xpcomviewer.mozdev.org)

○Eclipse○
EclipseXUL(XULRunnerアプリの開発向け)
URLリンク(eclipsexul.sourceforge.net)
XulBooster(Firefox用拡張の開発向け)
URLリンク(cms.xulbooster.org)

33:デフォルトの名無しさん
06/12/13 19:13:59
ぎゃあ、XPXOMViewerってなんだよ・・・
元のページのタイトルが間違ってんじゃん・・・
正しくはXPCOMViewerってことで

34:デフォルトの名無しさん
06/12/14 00:44:13
>>33
言われるまで気づかなかった

35:デフォルトの名無しさん
06/12/14 14:18:20
これってXPCOM Component Viewerとは別物なの?

36:デフォルトの名無しさん
06/12/14 23:26:03
Component Object Model Component Viewer って変な感じ

37:デフォルトの名無しさん
06/12/17 21:33:36
地域化(locale)が全く出来ません。
.batファイルでスクリプトを書いてパックしてるんだけど・・・
パック後じゃないと内容は確認できないの?

38:デフォルトの名無しさん
06/12/18 23:15:53
chrome.manifestかinstall.rdfが間違ってるんじゃないの?

39:デフォルトの名無しさん
06/12/18 23:30:13
デバッグ中はxpiにしなくても良い

40:デフォルトの名無しさん
06/12/19 21:51:57
じゃぁデバッグ中はchrome.menifestとかcontent.rdfは関係ないの?

41:デフォルトの名無しさん
06/12/19 23:00:03
関係ある。chrome.manifestとinstall.rdfは必須。
content.rdfなんてものは捨ててしまえ。

42:デフォルトの名無しさん
06/12/19 23:00:34
もっと素朴な疑問
そもそも拡張機能のデバッグってどうやってるの?

43:デフォルトの名無しさん
06/12/20 20:15:35
dumpでエラーを監視する

44:デフォルトの名無しさん
06/12/23 14:25:15
>>41
やってみる

45:デフォルトの名無しさん
06/12/23 23:20:57
chrome://hoge/content/hoge.jarって、「jar」で必須?
URLリンク(developer.mozilla.org)
これだとjar圧縮は必要なくてrootディレクトリをzip→.xpiにリネームだけで済むらしい。
みんなどっち?

46:デフォルトの名無しさん
06/12/23 23:37:50
そもそもいろいろなことに目をつむれば圧縮する必要すらないわけだが。

47:デフォルトの名無しさん
06/12/23 23:55:36
jarは必須ではない。

48:デフォルトの名無しさん
06/12/24 02:05:50
>>45
圧縮しなくてもいいが圧縮(無圧縮ね)したほうがパフォーマンスがいい

49:デフォルトの名無しさん
06/12/24 10:39:30
jarにしない場合、
chromeFiles/content/xxx/
chromeFiles/skin/xxx/
っていうディレクトリ構成が一般的だが、chrome.manifestが正しければ
content/
skin/
でも問題ない。

50:デフォルトの名無しさん
06/12/24 11:11:51
>>49
その一般的って言うのはどこかで推奨されてる?
Greasemonkeyがそんな構成になってたと思うけど
そうする明確な理由があるなら知りたい。

51:デフォルトの名無しさん
06/12/24 12:35:18
>>50
chrome.manifestの指定に従ってるだけだから
別にどう作ってもいいんじゃね
拡張ごとにてんでバラバラじゃん
デフォルト値だけはdefaults/preferences/default.jsに決まっているみたいだけど


52:デフォルトの名無しさん
06/12/26 02:21:49
ファイルのドラッグ&ドロップに反応したいのですが、内部のjsファイルとXPCOM Referenceを見ながら探してもどうすればいいのか分からないのですが…
私ってダメな子なんでしょうか…orz


53:デフォルトの名無しさん
06/12/26 19:23:51
XULチュートリアルのドラッグ&ドロップの章を
見ながらやってみるといいと思う


54:デフォルトの名無しさん
06/12/27 00:43:50
ドラッグ&ドロップは、チュートリアルには難しいという
ことなのか、最近のものでは外れていますんで、
日本語訳を読みたいのなら MDC ではなく、旧訳の方をどうぞ...

URLリンク(xul-app.hp.infoseek.co.jp)

55:デフォルトの名無しさん
06/12/27 11:39:19
実際に使うのは多分これだね
URLリンク(xul-app.hp.infoseek.co.jp)


56:デフォルトの名無しさん
06/12/27 22:31:39
今までの流れです

XPCOM Reference でDrag and DropのAPI群を見つける
     ↓
これだけだと何のことか分からないのでjsファイルを全文検索
     ↓
nsDragAndDropを発見、さらに検索
     ↓
onDrop属性発見、onDrop="alert('Hello,Drop')"とか書いて試してみる、がなんか動かない
     ↓
ondragover="nsDragAndDrop.dragOver(event,textObserver)"とかやればいいのね、アラ、動かない。
     ↓
直しては試しながら、頓挫

というカンジでしたが>>44>>45あたりのリンクのおかげで解決いたしました。
なんというか、努力不足でした、スイマセン。


57:デフォルトの名無しさん
06/12/27 22:32:39
> というカンジでしたが>>44>>45あたりのリンク
54、55ですね

58:デフォルトの名無しさん
06/12/30 00:57:48
chrome://xxx/content/test.jsからchrome://xxx/content/file.txtのファイルを
読みたいのですが、ファイルパスを得るにはどのようにすればよいでしょうか?
nsIDirectoryServiceを使ってProfDからextensionsフォルダ、GUIフォルダと探った
としてもその先がわかりません。

59:デフォルトの名無しさん
06/12/30 12:27:49
>>58
URLリンク(piro.sakura.ne.jp)
の後半でどうですか?

60:デフォルトの名無しさん
06/12/30 16:07:47
>>59
まさにそれでした。ありがとう。

61:デフォルトの名無しさん
07/01/02 06:22:43
nsIStringBundleServiceのcreateBundleと同じような感じで、JavaScriptから
DTDファイルのローカライズされた文字列の一覧を取得することは可能でしょうか?

62:デフォルトの名無しさん
07/01/08 10:36:01
pc8.2ch.net→pc10.2ch.net
なんか鯖移転したみたいだけど、pc8のほうにはまだdatが残ってるぽい。

63:デフォルトの名無しさん
07/01/08 10:49:27
imageタグで画像を表示したらなんか引き伸ばされちゃったんですけど。
cssでの指定はどうすればいいですか。

64:デフォルトの名無しさん
07/01/08 11:26:52
>>63脳みそ腐ってたごめん。解決した。

65:デフォルトの名無しさん
07/01/22 01:26:37
flexなbox内に配置した要素のサイズがboxに引きずられて拡大縮小してしまうんだけど、どうすれば防げる?

<vbox flex="1">
<image src="xxx.png"/>
</vbox>

66:デフォルトの名無しさん
07/01/22 21:27:31
>>65
URLリンク(developer.mozilla.org)

67:デフォルトの名無しさん
07/01/23 00:21:43
>>66
さんくす

68:デフォルトの名無しさん
07/01/29 23:41:17
"@mozilla.org/process/ipc-buffer;1"
nsIIPCBuffer を使いたいのですが、自分で
作るしかないのでしょうか?

69:デフォルトの名無しさん
07/01/30 00:51:08
>>68
enigmail に入ってるやつ使えないかな

70:デフォルトの名無しさん
07/01/30 12:21:46
>>50
なぜ一般的か、っていうと、mozilla.orgの内部的な慣例ではそうなってるから、だね。
フォルダを一階層余分に付ける直接的な理由は、複数のパッケージを
同一のjarに入れたい場合があるから。

例えば、"example"という名前の拡張を作った場合、
example.jarの構成が、
content/foo/foo.xul
content/foo/foo.js
content/bar/barOverlay.xul
content/bar/barOverlay.js

で、アクセス方法が
chrome://foo/content/foo.xul
chrome://bar/content/barOverlay.xul
のような複合パッケージングがありうることを考えると、
「慣例」としては、一階層余分に付ける方が無難になる。
だって、chrome.manifestを
content foo jar:example.jar!/foo/
content bar jar:example.jar!/bar/
という風に書けるわけだから。

しかし、現実に拡張を作成する場合、そういう複雑なことをするよりは、
むしろjarを2つ作る方が便利だから、この慣例に従うメリットはない。
納得がいかなければ、en-US.jarとかを覗いてみると良くわかると思う。

まとめ
・jarに「しない」場合じゃなくて、jarに「する」場合のための慣例。
 (単に、解凍していない時のファイル構造を見る機会が少ない故の勘違いか)
 install.js時代は、インストールのスクリプトを書くのがすごく大変だったから、
 浅知恵でファイル構成を考えると、すぐインストール不可になっていたのも大きい。
・現状では無意味。

71:デフォルトの名無しさん
07/02/10 13:32:55
URLリンク(www.mozilla-japan.org)
これのScaling and rotationというスライドで紹介されているページの回転とかって
具体的にはどういう技術で可能になるのでしょうか?

72:デフォルトの名無しさん
07/02/10 13:51:20
cairo

73:デフォルトの名無しさん
07/02/10 14:39:18
じゃあ今のMinefieldでcairoをつかってTab Effect見たいなことできますか?

74:デフォルトの名無しさん
07/02/15 16:43:57
ところで
window {
background-color:transparent !important;
}
とやると、とたんに中身が全く表示されなくなるxul要素が結構あるみたいなんだが、これは仕様?バグ?それとも仕様という名のバグ?



75:デフォルトの名無しさん
07/02/15 19:18:23
>>74
それ 2.0.0.1 のバグじゃなかったっけ?

76:デフォルトの名無しさん
07/02/26 20:08:24
OSを作ってください><

77:74
07/03/20 17:31:11
>>75
あらら。Firefox2.0.0.2にあげたけど、ダメだったよ…。

78:デフォルトの名無しさん
07/03/31 07:27:20
>>77

79:デフォルトの名無しさん
07/03/31 08:02:04
>>77
仕様という名のバグとも言える仕様。
参考
URLリンク(bugzilla.mozilla.org)
URLリンク(blog.goo.ne.jp)
URLリンク(level.s69.xrea.com)
URLリンク(maguroban.s41.xrea.com)

まとめ
本来Fx3相当に入れるべき(?)patchを2.0.0.1に迷いながらも入れたので、特定のCSS指定でパフォーマンスの悪化、及び表示が狂うなどの現象が起きる。
このpatch自体は表現の幅を広げるが、告知がきちんと出来ていなかった為に一部のTheme職人がアタフタ。
拡張機能の互換性に関わるAPIの変更はマイナーバージョンでは入れないみたいだけど、Themeは無視ですか?その辺の認識を統一よろ。>開発者

Theme作者界隈ではそこそこの話題になったけどね。
機能として入ったものが引き起こした問題だから、2.0.0.1 - ALLが該当する。
個人的には、2に入れようが3に入れようが、Theme作者でmozilla.orgのアナウンスをこまめにチェックする人以外はどうせ同じ所でハマると思う。
今回はアナウンスがアレだったからね……。

それより俺はwindowの背景をtransparentして何がしたいのか聞きたい。

80:77
07/04/01 21:21:14
windowを透明にする
  ↓
背景画像を萌え絵にする

うっせー! なにかもんくあるかー!!

81:デフォルトの名無しさん
07/04/02 01:55:19
すいません。質問です。
有るウェブページをみていて、そのwebページのソースコードを取得したいんですが、
何か良い方法は有りますでしょうか?
例えば、有るページをみていてそこに書いてあるMozillaと言う文字を読み込んだ瞬間に
もじらみたいに変える方法を捜しているんですが良く分からないんです。

82:デフォルトの名無しさん
07/04/02 01:59:50
Grease Monkey でも使っとけ

83:デフォルトの名無しさん
07/04/02 02:06:23
>>82
Grease Monkeyではどのようにすれば取得できるのでしょうか?

84:デフォルトの名無しさん
07/04/02 02:19:49
理解できました。
すいません。

85:デフォルトの名無しさん
07/04/03 02:44:21
JavaScriptの呼び出しについての質問です。

overlay.xulというXULファイルがあって、
<?xml version="1.0"?>
<overlay id="helloworldOverlay"
xmlns="URLリンク(www.mozilla.org)
<menupopup id="menu_ToolsPopup">
<menuitem id="helloworldMenuitem"
label="Hello, World!"
insertbefore="sanitizeSeparator"
oncommand="hoge();" />
</menupopup>
</overlay>

Hello, World!というメニューをクリックしたら、
同じcontentディレクトリのファイルhoge.jsの
以下のようなスクリプトを実行したいのですが、
どうすればoncommandで呼び出せるのでしょうか?

function hoge (){
window.alert("hogehoge");
}


86:デフォルトの名無しさん
07/04/03 05:33:55
scriptタグでインポート

87:デフォルトの名無しさん
07/04/03 06:21:35
>>86
idを使って呼び出すことは出来ないのでしょうか?

88:デフォルトの名無しさん
07/04/03 06:32:22
id?
何の話?

89:デフォルトの名無しさん
07/04/03 07:42:58
>>87
overlay.xulで<overlay〜の行の次に追加。もちろん、hogehogeはあくまで例だが。

<script type="application/x-javascript" src="chrome://hogehoge/content/hoge.js"/>

idが何を指すかはよく分からんが、もし相対パスでやろうとしてるなら止めとけ。
例えば、それをbrowser.xulにoverlayしてるんなら、
<script type="application/x-javascript" src="hoge.js"/>
という記述は次のように解釈される。(多分。テストはめどいのでしてない)
<script type="application/x-javascript" src="chrome://browser/content/hoge.js"/>
つまり、overlay先(ここではchrome://browser/content/browser.xul)を基準にした相対パスになる可能性があるので、素直に全部書いた方がいいよ。

で、俺も質問していいか?
hack本なんかには「chrome内のscriptではtype="application/x-javascript"にせよ」みたいな事が書いてあるけど何故?
古いバージョン(text/javascriptをサポートしないバージョン)の為だったらchrome.manifest形式のみの拡張とかにはいらんよな……と思ったんだがどうよ?

90:デフォルトの名無しさん
07/04/03 08:42:14
>>89
経験上、相対パスでおk

91:デフォルトの名無しさん
07/04/03 13:39:10
Firefoxで、ツールバーアイコンとか動的に表示が変わるタイプのアイコンは
chrome://browser/skin/Toolbar.pngみたいな集合体から
-moz-image-regionで切り出す場所を変えて使ってるケースが多いようだけど
これは各アイコンを別ファイルで持っておくより効率がいいんかな

92:デフォルトの名無しさん
07/04/03 14:31:01
アイコン画像がメモリ上に読み込まれるのはその要素が表示される
タイミングなので、hoverとかの状態ごとにファイルを分けてると
ボタンに最初にmouseoverした時にファイルの読み込みが発生して
一瞬真っ白なアイコンになってしまうので、その回避と思われ

93:デフォルトの名無しさん
07/04/03 15:06:13
なるほどthx

94:デフォルトの名無しさん
07/04/03 16:18:36
ファイルの数も抑えられるしファイルを1つ開いただけでエフェクトによる変化を見較べやすいのもあるんじゃないかと思った>画像

95:デフォルトの名無しさん
07/04/04 19:19:29
キャレットの色とか変える事できますか?
探しているのですがなかなかそれらしい物が見つからないのです

96:デフォルトの名無しさん
07/04/05 17:13:06
拡張ムズカシイぽ
でもがんばるぽ

97:デフォルトの名無しさん
07/04/06 08:02:33
defaults/preferences/の設定用JavaScriptの名前ってどうしてる?
俺は"defaults.js"にしてるけど知人は"prefs.js"にしてる。ちなみに俺は"prefs.js"なんてダサいと思うけど知人は"defaults.js"なんt(ry
で他人様の拡張機能ばらしたら(拡張機能名).jsが多いっぽい……。
何らかのガイドラインでもあるの?

98:デフォルトの名無しさん
07/04/06 10:31:57
>>97
<app install dir>/defaults/pref/*.js で
firefox.js, inspector.js, mailnews.js とかになってるからだろうな。
extensions/ 以下ならどうでもいいんだろうけど、
一応他と区別できる名前の方がいいんでないの?

99:デフォルトの名無しさん
07/04/06 20:07:30
>>9

100:デフォルトの名無しさん
07/04/06 20:09:01
>>98
thx.

>>99は俺のミス。すまん。

101:デフォルトの名無しさん
07/04/07 13:56:51
Function.prototype.foo = function(){}
for( i in a )
dump( i+" : "+a[i]+"\n" );

とやっても、Functionオブジェクトに、fooメソッドが追加されていない。
ブラウザ上では、きちんと追加されているみたいなんだが…。
Functionオブジェクトだけ拡張を認めないとか、そんな規則あったっけ?
一応環境はWinXP、Firefox2.0.0.3で。

102:デフォルトの名無しさん
07/04/07 15:42:29
>>101
なんか bugzilla ごちゃごちゃしてよくわからんが、たぶんバグ
URLリンク(bugzilla.mozilla.org)
[Adding properties to Function prototype fails in chrome]
URLリンク(bugzilla.mozilla.org)
[XUL chrome precompiled functions don't inherit from current window's Function.prototype]
このへんかなぁ

URLリンク(bugzilla.mozilla.org)
[Function.prototype disappears after several seconds of browser's work. (chrome)]
似た症状なんだけど、こっちは治ってる。謎

103:101
07/04/07 15:54:53
>102
ふぅむ。なんか結構根幹的なところでバグも残っているのね。
なんとかコレ使わないでいける様に頑張ってみます。
ありがとうございます。

104:97
07/04/15 00:19:42
>>97-100
自己レス。
スタンドアロンXULアプリケーションではない場合(拡張機能)、install.jsでdefaults/preferences/*.jsをコピペして利用する際に、
区別できる名前だった方が拡張機能のデフォルト説明を見つけやすい
defaults.jsとかだと重複する可能性がある
などの理由から独自の名前の方がいいっぽい。(他にもあるかも)
別に拒否する理由もないから拡張機能名.jsにするよ、本当にthanks.

105:デフォルトの名無しさん
07/04/21 12:59:46
もしかしてMDC-en落ちてる?

106:デフォルトの名無しさん
07/04/22 01:28:50
>>105
今日はMediaWikiアップグレードの日らしいよ
URLリンク(www.bitstampede.com)

今は表示できるから、もうセットアップ終わったのかな

107:デフォルトの名無しさん
07/04/22 14:01:06
browser要素へaddProgressListener使ってnsIWebProgressListenerを取り付ると
ブラウザ内で読み込んだページや画像データなどのデータ受信状況を監視できますが、
ページ内で使用したXMLHttpRequestによるデータ受信状況は監視対象とはなりませんか?

108:デフォルトの名無しさん
07/04/28 02:38:24
>>105-106
MDC実験版(AMOで言うpreviewなヤツ)
URLリンク(developer-stage.mozilla.org)
幾つかテンプレート系の変更が起きてるから翻訳かじってる奴は注意。

109:デフォルトの名無しさん
07/05/19 00:48:54
よく「nsIXXX型」という言い方をしますが、これは厳密には
「Components.interfaces.nsIXXXインタフェースを実装したオブジェクト」
という意味になりますでしょうか?

110:デフォルトの名無しさん
07/05/19 12:36:56
Components.interfaces.nsIXXXインタフェースという型、だろ

111:デフォルトの名無しさん
07/05/22 13:09:00
nsIWebBrowserPersist のsaveURIでhttpで何らかのファイルをダウンロードするときに、httpのステータスコードの取得の仕方をわかる方いますか?

403のページとかが返って来ても、ダウンロードが完了したということになってしまっています。

112:デフォルトの名無しさん
07/05/22 21:49:23
プラグインの開発中、ファイルを編集するたびに

 プラグイン削除→再起動→プラグイン導入→再起動→テスト

とするの激面倒なんですが、再起動無しにプラグインだけリロードって
できませんか?


113:デフォルトの名無しさん
07/05/22 22:15:38
>>112
jar でなくフォルダにインストールされるようにして、
URLリンク(piro.sakura.ne.jp)
XUL Cache を無効にして新規 window 開け

114:デフォルトの名無しさん
07/05/23 00:24:10
リロード面とは別の話だが、開発中はインストールしたフォルダを直接弄ったほうが早いよね。
あと、chromeフォルダ以下のjarも展開状態のままで。

115:デフォルトの名無しさん
07/05/23 01:01:57
>>112
本当にエクステンションじゃなくプラグインを開発してるなら話はマタ違ってくるが
エクステンションなら普通ソースでインストールしとくだろう。
まあ、再起動が必要かどうかはまた別の問題だけど....
別ウインドウを開けばOKとか、再起動必要ない場合も結構有るよ。

116:デフォルトの名無しさん
07/05/23 06:54:02
つ Extension Developer's Extension

117:デフォルトの名無しさん
07/05/24 00:42:42
>>113,116
ナイスアドバイスアリガトンです。

XPIにせずフォルダのままロードできるよっていう拡張(プラグインだと
別の意味でした)を見つけて「これで楽になる〜」と思っていたら
新規ウィンドウを開こうが何しようが再起動以外にXULの編集結果反映がされず
困ってましたが、それで無事解決できました!

これでようやく本格的にXUL開発に飛び込める・・・

118:デフォルトの名無しさん
07/05/24 08:36:07
URLリンク(developer.mozilla.org)
のドキュメントや
URLリンク(kokogiko.net)
のコメント欄にあるような、独自のヘッダをリクエスト毎に付けようとしています。
とりあえず独自ヘッダは付くようになりました。

ただ、リクエストするHTMLがframeやimgを含んでいると
ブラウザが勝手にframeやimgのリクエストをしますが
そのリクエストには上記独自ヘッダが付きません。

要するに自分でURL欄にアドレスを入力してEnterを押した
リクエストの一回だけにしか独自ヘッダが付きません。
全てのリクエストに付くようにするにはどうすれば良いのでしょうか?

119:118
07/05/24 10:30:40
リクエスト毎にヘッダが付かない、は勘違いでした。
独自ヘッダを付加する前に、条件判定用のヘッダの取得をしています。

var head = oHttp.getRequestHeader("Authorization");
oHttp.setRequestHeader("X-HOGE", "huga", false);

Authorizationのヘッダの内容を取得しようとして失敗し
後続のコードが実行されていないだけでした。

という訳で質問を変更します。Authorizationヘッダを
毎リクエスト正しく取得するにはどうすれば良いのでしょうか?

120:デフォルトの名無しさん
07/05/28 19:54:26
既存のコンポーネント(バイナリ)をJavaScriptのXPCOMでoverrideするには
どうすれば良いのでしょうか?
例えば"@mozilla.org/network/protocol/about;1?what=blank"を
独自の処理に置き換えたいと思っています。
URLリンク(www.mozdev.org)
とかは一応読みました。
interface nsIMyExam : nsIAboutModule
{
    nsIChannel newChannel(nsIURI URI);
};

function MyComponent() {}
MyComponent.prototype = {
    newChannel: function () { dump("My Test\n"); },

という風に継承(上書き)定義すれば良いのでしょうか?

あと、同じscheme名のメソッドをoverride出来たとして、
そのメソッドの中でオリジナルのメソッドを実行するにはどうすれば良いのでしょうか?
URLリンク(www.xuldev.org)
にあるような、既存の関数の置き換え例はちらほら見掛けるのですが…

以上、ご存知の方がいらっしゃいましたら、宜しくご教示お願い致します。

121:デフォルトの名無しさん
07/06/17 13:29:35
昨日のDevConでそういう話が出ていたような・・・
URLリンク(www.ne.jp)
Enhanced Feed PreviewではファクトリーのregisterSelfで起動時に毎回
コンポーネントを上書きしてる?とか言ってた気がする

122:デフォルトの名無しさん
07/06/19 15:49:13
XPCOMコンポーネントをCで作ったら邪道?Java嫌いなんだよね

123:デフォルトの名無しさん
07/06/19 16:02:34
べつにいいんじゃないの?

124:デフォルトの名無しさん
07/06/19 17:04:39
なんでJavaがでてくるんだ?

125:デフォルトの名無しさん
07/06/19 20:28:14
>>124
XULもJavaもクロスプラットフォーム

126:デフォルトの名無しさん
07/06/19 22:42:24
JavaXPCOMもPyXPCOMも実際に使われてる例は知らないが、C++は王道中の王道だろ。
ただ各プラットフォーム用のバイナリを配るのが面倒だ。

127:デフォルトの名無しさん
07/06/19 22:53:10
Cで作るにはC++のABIに気をつけないといけないはず。

128:デフォルトの名無しさん
07/06/20 05:04:15
Adaをつかいまつ

129:デフォルトの名無しさん
07/06/20 11:42:04
JavaScriptよりLiveScriptのほうがかっこいいじゃん

130:デフォルトの名無しさん
07/06/23 14:07:36
prefwindowではonbeforeunloadイベントは使えませんか?
それから、XULのどの要素がどのイベントを持っているかはどうやって調べますか?

131:デフォルトの名無しさん
07/06/29 01:36:10
“ もじら組スタッフは、以前からスタッフだったyukichiさんをもじら組から除名することを決めた。
URLリンク(eto.tumblr.com)
kazhik.tech:もじら組スタッフの除名
URLリンク(sabakan.tumblr.com)
kazhik.tech:もじら組スタッフの除名
URLリンク(plnet.jp)
もじら組スタッフの除名
URLリンク(blog.livedoor.jp)


132:デフォルトの名無しさん
07/06/29 02:25:13
>>131
それって何か大事なの?
ってか yukichi って誰?
何やらかしらの?

133:デフォルトの名無しさん
07/06/29 03:22:29
ggr

134:デフォルトの名無しさん
07/06/29 09:45:56
tumblr を貼る意味が分からない

135:デフォルトの名無しさん
07/06/29 17:15:22
>>131
もじら組で今起こっていること
URLリンク(amigomr.dw.land.to)
Re: もじら組で今起こっていること
URLリンク(d.hatena.ne.jp)
[Web] もじら組除名事件でWikipedia批判が再燃か?
URLリンク(d.hatena.ne.jp)
【百科事典】Wikipedia ウィキペディア ゆきちスレ
スレリンク(hobby板)

136:デフォルトの名無しさん
07/06/29 17:32:41
>>135に追加。
福澤俊とは - はてなダイアリー
URLリンク(d.hatena.ne.jp)
>自分が知らなければ、要出典タグを貼りに行く、もしくは「こんな単語をはじめて聞いた」などの発言を執拗に繰り返す利用者の一人でもある。
>2007年5月6日には問題のエントリーに投稿されたキリカに対するKasumoererのコメントを一括削除したことで話題となる。
>JCA-NETなどの極左団体および特定アジア団体とウィキペディア日本語版の関係は、よほど知られたくない事項の様子である。

137:デフォルトの名無しさん
07/06/29 18:49:36
この Kasumoerer って奴の私怨で FA ?

138:デフォルトの名無しさん
07/06/29 19:11:02
FA

139:デフォルトの名無しさん
07/06/30 11:05:17
>>137-138
何この酷い自演

140:デフォルトの名無しさん
07/06/30 16:10:32
>>137-138
笑える

141:デフォルトの名無しさん
07/07/02 23:20:10
Thunderbirdの拡張機能を作って、何人かの人に使ってもらっているのですが、正しく動作しないとの報告がありました。
原因を調査中なのですが、設定情報を保存するあたりにバグがあるのではないかと思いました。
設定情報の保存は、以下のようなクラスを作っているんですが、何かおかしな所があれば指摘してほしいです。
よろしくお願いします。
---
PrefUtil = {
  PREF : Components.classes['@mozilla.org/preferences;1'].getService(Components.interfaces.nsIPrefBranch),
  KEY : "hogehoge",
  getPref : function() {
    try{
      var type = PrefUtil.PREF.getPrefType(PrefUtil.KEY);
      const nsIPrefBranch = Components.interfaces.nsIPrefBranch;
      switch (type) {
        case nsIPrefBranch.PREF_STRING:
          return PrefUtil.PREF.getCharPref(PrefUtil.KEY);
        case nsIPrefBranch.PREF_INT:
          return PrefUtil.PREF.getIntPref(PrefUtil.KEY);
       case nsIPrefBranch.PREF_BOOL:
        default:
          return PrefUtil.PREF.getBoolPref(PrefUtil.KEY);
      }
    }catch(e){
      return "";
    }
  },
  setPref : function(str) {
    PrefUtil.PREF.setCharPref(PrefUtil.KEY, str);
  }
}
---
var str = Pref.getPref();
のような感じで使います。

142:デフォルトの名無しさん
07/07/03 00:14:32
>>141
日本語が入った文字列を getCharPref/setCharPref で出し入れしようとしてないか?
そうなら代わりに getComplexValue/setComplexValue を使うべき。
それと特別な事情がない限り PrefUtil.PREF や PrefUtil.KEY じゃなく
this.PREF や this.KEY にするのが普通じゃないか?


143:デフォルトの名無しさん
07/07/03 12:11:22
>>141-142
URLリンク(nanto.asablo.jp)
この方法を使えばgetComplexValue/setComplexValueつかわなくてもいけるよ

144:デフォルトの名無しさん
07/07/03 12:12:41
あとgetは型を自動判別してるのにsetは文字列型限定って何か意味あるの?

145:sage
07/07/03 23:01:04
141です。ご指摘ありがとうございます。
>142
現在は日本語はつかっておりません。
また、ご指摘の通りthis.PREFのほうがいいですね。
>143
そんな方法が。参考になります。
>144
特に意味はありません。。getを張り切って作ったけど、結局setでは文字列しか
ありえないな、、と思って手を抜いてしまいましたorz

なお、不具合に関しては別の箇所が原因だと言うことがわかり一件落着しました。
ご協力ありがとうございましたm(..)m

146:デフォルトの名無しさん
07/07/04 10:30:38
うっふん

147:デフォルトの名無しさん
07/07/08 03:01:41
event.screenX, event.screenYを使わずに現時点のマウスカーソルの位置を知る方法ありますでしょうか?

148:デフォルトの名無しさん
07/07/12 05:06:30
>>147
xpcomコンポーネントを作ればできるよ

149:デフォルトの名無しさん
07/08/05 22:44:41
overflow:autoでスクロールバーを表示させた要素のスクロール位置を
動的に調整することはできますか?

150:デフォルトの名無しさん
07/08/27 00:44:59
よーし、Firefoxの拡張の中身見てXUL勉強しちゃうゾーとpiroさんのサイトの色々表示させる設定をしたところ、いきなり詰まってしまいました。すみませんが教えてください。テキストボックスをクリックするたびに Auto Copy 0.6.4 と言う拡張が jsコンソールに
エラー: target.textbox has no properties
ソースファイル: chrome://autocopy/content/autocopyOverlay.js
行: 653
とエラーを表示します。これを表示させないようにするにはどう書き換えればいいでしょうか。
function Autocopy_isTargetEditable(target)〜
if(target)
{
if(target.toString().match(/object XUL/i))
{
ココ→if(target.textbox.value)
{
return true;
}
}
}

151:デフォルトの名無しさん
07/08/27 20:31:29
target に textbox が存在しない事がエラーの原因なら
value を参照する前に textbox が null でないかチェックすればエラーは回避できる

if (target.textbox && target.textbox.value)

152:デフォルトの名無しさん
07/08/28 02:05:43
>>151
ありがとうございます。エラーが出なくなりました。
これで Fx でググったりサイト眺めながら拡張を見れます。
ありがとうございました。

153:デフォルトの名無しさん
07/09/05 20:34:42
jQuery だとか prototype.js だとか、そっち系のライブラリはもういいよってくらい氾濫してるくせに、
ぜんぜん XPCOM をラップするライブラリがないぜ?いや、jslib とか mozlib とかはあるけどさ・・・
Components だか Interfaces だか、 ns...みたいなプリフィックスとか見るだけで吐き気がするぜ。
XULRunner だってさ、.xul を D&D で投げるだけでとりあえず実行してくれたら、お手軽で素敵じゃないか?

154:デフォルトの名無しさん
07/09/05 22:22:50
つ FUEL

一応Firefox2にもバックポートできるようにするみたいなこと言ってたような気がする…

155:デフォルトの名無しさん
07/09/09 11:01:02
文字コードの自動判定ってどーやればいいんだろーか

156:デフォルトの名無しさん
07/09/09 22:47:18
>>155
Mozillaのuniversalchardetはscriptableじゃないインターフェイスらしいので、それをどうにかするか、それをCライブラリ化したものがあるからそれを使うか……。

157:デフォルトの名無しさん
07/09/09 23:40:22
>>156
あら、そーなんだ。うーん、複数の文字コードでとりあえず一度変換させて、
U+FFFDの数で推測する手もなくはないけどねぇ。貴重な情報どーもdクス。

158:デフォルトの名無しさん
07/09/11 22:42:48
mozStorageにデータを入れて、サイドバーにmozStorageから取得したデータを
表示させたいと思っています。

もし各ウィンドウのサイドバーごとにデータベースへの接続を持たせると、複数のウィンドウが
開かれている状態などでは、同時にデータベースへアクセスする可能性が有るので
URLリンク(developer.mozilla.org)
You can not access a single database from multiple connections from different threads.
に引っかかると思います。

こういう拡張を作成する場合、どのようにしてmozStorageを扱うのが良いのでしょうか?

159:デフォルトの名無しさん
07/09/12 01:01:54
JSからXPCOM経由でデータベース接続する分には「different threads」には引っかからないのでは。
もちろんFirefoxのプロセスはひとつだけという条件付きですけど。

160:デフォルトの名無しさん
07/09/12 02:33:34
各 window は個別にスレッドを持ってたと思う。
components/ に その拡張専用の storage service(singlton) を持つ
JS XPCOM をつくっておいて、
サイドバー XUL からはそのサービスを介してだけアクセスすればいいんじゃないかな。
Places(history,bookmarks) もそんなかんじだし。

161:158
07/09/12 03:01:47
なるほど、XPCOMを作れば解決出来そうですね。
調べてみます。有難うございました。

162:デフォルトの名無しさん
07/09/12 17:02:11
XUL チュートリアル(和訳)
URLリンク(xul-app.hp.infoseek.co.jp)
上のページは、元々「有限会社エヌアイティー技術情報部」というサイトに
あったものでした。
URLリンク(web.archive.org)

なぜか2002年に突然削除されてしまいましたが。このXULスレの初代のころです。

昨日、その元サイトの移転先を見つけました。断言はできませんが、状況から
見て、どうやら訳者様は亡くなっておられるようです。
URLリンク(www.geocities.jp)
URLリンク(www.geocities.jp)

合掌。


163:デフォルトの名無しさん
07/09/19 15:14:45
URLリンク(www.mozilla.gr.jp)
例えばこれでtextbox内でENTERを押すとHELLOボタンが押されたことにしたい場合ってどうしたらいいんでしょうか。
すいませんが教えてください。

164:デフォルトの名無しさん
07/09/19 16:05:36
>>163
textbox に onkeypress="if(event.keyCode==13)hello()" とかすれば?

165:デフォルトの名無しさん
07/09/19 16:17:58
ところで DOM_VK_RETURN じゃなく DOM_VK_ENTER が出てくる環境ってあるの?

166:デフォルトの名無しさん
07/09/19 17:01:38
>>164
おおできたできた!ありがとうございます。
っていうかこれjavascriptスレで聞いたほうがよかったかもですね。

167:164
07/09/19 21:06:07
>>163
用途次第では onchange の方が適切な場合もあると思うけどまぁいろいろ試してくれ

168:デフォルトの名無しさん
07/09/24 16:53:14
大昔に野良拡張を作った経験があります。
色々な所で Gran Paradiso のことを目にするようになったので
先ほどα8を入れてみました。
ローカルディスクから拡張機能をインストールしようとしたらはねられて困ったのですが
とりあえずupdateURLを削除した状態で開発すれば良いんですかね。
色々と面倒になりましたな。

169:デフォルトの名無しさん
07/09/25 15:50:56
>>168
McCoy


170:デフォルトの名無しさん
07/09/26 14:17:48
about:config 風に、ロケーションバーに about:hogehoge と打ち込むと、
カレントタブの中に chrome が読み込まれるような拡張というのは
どんなことをヒントにすればよいですか?

171:デフォルトの名無しさん
07/09/26 15:33:32
>>170
MR Tech About:About をパクればいいんじゃないか?

172:デフォルトの名無しさん
07/09/26 16:45:30
>>171
非常に参考になりました。ありがとうございました。

173:デフォルトの名無しさん
07/09/29 07:25:22
>>171
今はnsIAboutModuleインターフェースが
変更されたからそのままだとtrunkで使えない気が。
getURIFlagsメソッドも実装しないといけないんじゃないの?
URLリンク(mxr.mozilla.org)

174:デフォルトの名無しさん
07/09/29 10:29:08
Browser#reload()でページのリロードができると思うんだけど、リロードじゃなくて、
ダウンロード済みのソースからDOMの再構築ってできないのかな?
リロードしちゃうとサーバに再リクエストしちゃうんで、セッション管理しているサーバで
ちょっと困っているんだけど。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5370日前に更新/107 KB
担当:undef