ずるしてらくしてかれいに2げっとかしらかしら〜
XULはMozilla Corporationの商標だぞ
勝手に使うなよ
There is no data.
There is only xul.
XUL® でいいのか?
2chってとか ™ って表示されないんだっけ?
♥は出るのにな
お 出るじゃんXUL™
var foo.prototype = {
hoge: function foo_hoge(){
...
}
}
のような書き方をよく目にしますが、foo_hogeにはどういう意味があるのでしょうか?
foo_hogeでググれ
いや、
foo.prototype = {
hoge: function(){
...
}
};
ではなく、
foo.prototype = {
hoge: function foo_hoge(){
...
}
};
とすることに意味はあるのか、ということを知りたいのです。
デバッグがしやすくなる。
XPConnectに絡んだエラーが出たときとか、
関数名があればそれがエラーコンソールに出てくるから、
それを見ただけで大体の場所がわかる。
>11
思ったより検索結果が少ないことに驚いてるぜ俺。
16 :
デフォルトの名無しさん:2006/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 :
デフォルトの名無しさん:2006/12/06(水) 17:27:14
20 :
17:2006/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:2006/12/08(金) 01:15:08
>>19 ああ、新しいレスがあったんですね。すみません。
今から読んでchromeとやらを勉強します。
というかドキュメントが糞過ぎて見ないと分らない罠。
最終的にはソースを読むことになるんだけどな
そーっすね
ぎゃあ、XPXOMViewerってなんだよ・・・
元のページのタイトルが間違ってんじゃん・・・
正しくはXPCOMViewerってことで
これってXPCOM Component Viewerとは別物なの?
Component Object Model Component Viewer って変な感じ
地域化(locale)が全く出来ません。
.batファイルでスクリプトを書いてパックしてるんだけど・・・
パック後じゃないと内容は確認できないの?
chrome.manifestかinstall.rdfが間違ってるんじゃないの?
デバッグ中はxpiにしなくても良い
40 :
デフォルトの名無しさん:2006/12/19(火) 21:51:57
じゃぁデバッグ中はchrome.menifestとかcontent.rdfは関係ないの?
関係ある。chrome.manifestとinstall.rdfは必須。
content.rdfなんてものは捨ててしまえ。
もっと素朴な疑問
そもそも拡張機能のデバッグってどうやってるの?
dumpでエラーを監視する
そもそもいろいろなことに目をつむれば圧縮する必要すらないわけだが。
jarは必須ではない。
>>45 圧縮しなくてもいいが圧縮(無圧縮ね)したほうがパフォーマンスがいい
jarにしない場合、
chromeFiles/content/xxx/
chromeFiles/skin/xxx/
っていうディレクトリ構成が一般的だが、chrome.manifestが正しければ
content/
skin/
でも問題ない。
>>49 その一般的って言うのはどこかで推奨されてる?
Greasemonkeyがそんな構成になってたと思うけど
そうする明確な理由があるなら知りたい。
>>50 chrome.manifestの指定に従ってるだけだから
別にどう作ってもいいんじゃね
拡張ごとにてんでバラバラじゃん
デフォルト値だけはdefaults/preferences/default.jsに決まっているみたいだけど
52 :
デフォルトの名無しさん:2006/12/26(火) 02:21:49
ファイルのドラッグ&ドロップに反応したいのですが、内部のjsファイルとXPCOM Referenceを見ながら探してもどうすればいいのか分からないのですが…
私ってダメな子なんでしょうか…orz
XULチュートリアルのドラッグ&ドロップの章を
見ながらやってみるといいと思う
56 :
デフォルトの名無しさん:2006/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 :
デフォルトの名無しさん:2006/12/27(水) 22:32:39
chrome://xxx/content/test.jsからchrome://xxx/content/file.txtのファイルを
読みたいのですが、ファイルパスを得るにはどのようにすればよいでしょうか?
nsIDirectoryServiceを使ってProfDからextensionsフォルダ、GUIフォルダと探った
としてもその先がわかりません。
nsIStringBundleServiceのcreateBundleと同じような感じで、JavaScriptから
DTDファイルのローカライズされた文字列の一覧を取得することは可能でしょうか?
62 :
デフォルトの名無しさん:2007/01/08(月) 10:36:01
pc8.2ch.net→pc10.2ch.net
なんか鯖移転したみたいだけど、pc8のほうにはまだdatが残ってるぽい。
imageタグで画像を表示したらなんか引き伸ばされちゃったんですけど。
cssでの指定はどうすればいいですか。
flexなbox内に配置した要素のサイズがboxに引きずられて拡大縮小してしまうんだけど、どうすれば防げる?
<vbox flex="1">
<image src="xxx.png"/>
</vbox>
68 :
デフォルトの名無しさん:2007/01/29(月) 23:41:17
"@mozilla.org/process/ipc-buffer;1"
nsIIPCBuffer を使いたいのですが、自分で
作るしかないのでしょうか?
>>68 enigmail に入ってるやつ使えないかな
>>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時代は、インストールのスクリプトを書くのがすごく大変だったから、
浅知恵でファイル構成を考えると、すぐインストール不可になっていたのも大きい。
・現状では無意味。
cairo
じゃあ今のMinefieldでcairoをつかってTab Effect見たいなことできますか?
74 :
デフォルトの名無しさん:2007/02/15(木) 16:43:57
ところで
window {
background-color:transparent !important;
}
とやると、とたんに中身が全く表示されなくなるxul要素が結構あるみたいなんだが、これは仕様?バグ?それとも仕様という名のバグ?
>>74 それ 2.0.0.1 のバグじゃなかったっけ?
OSを作ってください><
77 :
74:2007/03/20(火) 17:31:11
>>75 あらら。Firefox2.0.0.2にあげたけど、ダメだったよ…。
78 :
デフォルトの名無しさん:2007/03/31(土) 07:27:20
79 :
デフォルトの名無しさん:2007/03/31(土) 08:02:04
80 :
77:2007/04/01(日) 21:21:14
windowを透明にする
↓
背景画像を萌え絵にする
うっせー! なにかもんくあるかー!!
すいません。質問です。
有るウェブページをみていて、そのwebページのソースコードを取得したいんですが、
何か良い方法は有りますでしょうか?
例えば、有るページをみていてそこに書いてあるMozillaと言う文字を読み込んだ瞬間に
もじらみたいに変える方法を捜しているんですが良く分からないんです。
Grease Monkey でも使っとけ
>>82 Grease Monkeyではどのようにすれば取得できるのでしょうか?
理解できました。
すいません。
JavaScriptの呼び出しについての質問です。
overlay.xulというXULファイルがあって、
<?xml version="1.0"?>
<overlay id="helloworldOverlay"
xmlns="
http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<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");
}
scriptタグでインポート
>>86 idを使って呼び出すことは出来ないのでしょうか?
id?
何の話?
>>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形式のみの拡張とかにはいらんよな……と思ったんだがどうよ?
Firefoxで、ツールバーアイコンとか動的に表示が変わるタイプのアイコンは
chrome://browser/skin/Toolbar.pngみたいな集合体から
-moz-image-regionで切り出す場所を変えて使ってるケースが多いようだけど
これは各アイコンを別ファイルで持っておくより効率がいいんかな
アイコン画像がメモリ上に読み込まれるのはその要素が表示される
タイミングなので、hoverとかの状態ごとにファイルを分けてると
ボタンに最初にmouseoverした時にファイルの読み込みが発生して
一瞬真っ白なアイコンになってしまうので、その回避と思われ
なるほどthx
ファイルの数も抑えられるしファイルを1つ開いただけでエフェクトによる変化を見較べやすいのもあるんじゃないかと思った>画像
キャレットの色とか変える事できますか?
探しているのですがなかなかそれらしい物が見つからないのです
拡張ムズカシイぽ
でもがんばるぽ
defaults/preferences/の設定用JavaScriptの名前ってどうしてる?
俺は"defaults.js"にしてるけど知人は"prefs.js"にしてる。ちなみに俺は"prefs.js"なんてダサいと思うけど知人は"defaults.js"なんt(ry
で他人様の拡張機能ばらしたら(拡張機能名).jsが多いっぽい……。
何らかのガイドラインでもあるの?
>>97 <app install dir>/defaults/pref/*.js で
firefox.js, inspector.js, mailnews.js とかになってるからだろうな。
extensions/ 以下ならどうでもいいんだろうけど、
一応他と区別できる名前の方がいいんでないの?
101 :
デフォルトの名無しさん:2007/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で。
103 :
101:2007/04/07(土) 15:54:53
>102
ふぅむ。なんか結構根幹的なところでバグも残っているのね。
なんとかコレ使わないでいける様に頑張ってみます。
ありがとうございます。
104 :
97:2007/04/15(日) 00:19:42
>>97-100 自己レス。
スタンドアロンXULアプリケーションではない場合(拡張機能)、install.jsでdefaults/preferences/*.jsをコピペして利用する際に、
区別できる名前だった方が拡張機能のデフォルト説明を見つけやすい
defaults.jsとかだと重複する可能性がある
などの理由から独自の名前の方がいいっぽい。(他にもあるかも)
別に拒否する理由もないから拡張機能名.jsにするよ、本当にthanks.
もしかしてMDC-en落ちてる?
browser要素へaddProgressListener使ってnsIWebProgressListenerを取り付ると
ブラウザ内で読み込んだページや画像データなどのデータ受信状況を監視できますが、
ページ内で使用したXMLHttpRequestによるデータ受信状況は監視対象とはなりませんか?
よく「nsIXXX型」という言い方をしますが、これは厳密には
「Components.interfaces.nsIXXXインタフェースを実装したオブジェクト」
という意味になりますでしょうか?
Components.interfaces.nsIXXXインタフェースという型、だろ
111 :
デフォルトの名無しさん:2007/05/22(火) 13:09:00
nsIWebBrowserPersist のsaveURIでhttpで何らかのファイルをダウンロードするときに、httpのステータスコードの取得の仕方をわかる方いますか?
403のページとかが返って来ても、ダウンロードが完了したということになってしまっています。
プラグインの開発中、ファイルを編集するたびに
プラグイン削除→再起動→プラグイン導入→再起動→テスト
とするの激面倒なんですが、再起動無しにプラグインだけリロードって
できませんか?
リロード面とは別の話だが、開発中はインストールしたフォルダを直接弄ったほうが早いよね。
あと、chromeフォルダ以下のjarも展開状態のままで。
>>112 本当にエクステンションじゃなくプラグインを開発してるなら話はマタ違ってくるが
エクステンションなら普通ソースでインストールしとくだろう。
まあ、再起動が必要かどうかはまた別の問題だけど....
別ウインドウを開けばOKとか、再起動必要ない場合も結構有るよ。
つ Extension Developer's Extension
>>113,116
ナイスアドバイスアリガトンです。
XPIにせずフォルダのままロードできるよっていう拡張(プラグインだと
別の意味でした)を見つけて「これで楽になる〜」と思っていたら
新規ウィンドウを開こうが何しようが再起動以外にXULの編集結果反映がされず
困ってましたが、それで無事解決できました!
これでようやく本格的にXUL開発に飛び込める・・・
119 :
118:2007/05/24(木) 10:30:40
リクエスト毎にヘッダが付かない、は勘違いでした。
独自ヘッダを付加する前に、条件判定用のヘッダの取得をしています。
var head = oHttp.getRequestHeader("Authorization");
oHttp.setRequestHeader("X-HOGE", "huga", false);
Authorizationのヘッダの内容を取得しようとして失敗し
後続のコードが実行されていないだけでした。
という訳で質問を変更します。Authorizationヘッダを
毎リクエスト正しく取得するにはどうすれば良いのでしょうか?
既存のコンポーネント(バイナリ)をJavaScriptのXPCOMでoverrideするには
どうすれば良いのでしょうか?
例えば"@mozilla.org/network/protocol/about;1?what=blank"を
独自の処理に置き換えたいと思っています。
http://www.mozdev.org/notes/hello_world_js_component.html とかは一応読みました。
interface nsIMyExam : nsIAboutModule
{
nsIChannel newChannel(nsIURI URI);
};
と
function MyComponent() {}
MyComponent.prototype = {
newChannel: function () { dump("My Test\n"); },
…
という風に継承(上書き)定義すれば良いのでしょうか?
あと、同じscheme名のメソッドをoverride出来たとして、
そのメソッドの中でオリジナルのメソッドを実行するにはどうすれば良いのでしょうか?
http://www.xuldev.org/blog/?p=58 にあるような、既存の関数の置き換え例はちらほら見掛けるのですが…
以上、ご存知の方がいらっしゃいましたら、宜しくご教示お願い致します。
XPCOMコンポーネントをCで作ったら邪道?Java嫌いなんだよね
べつにいいんじゃないの?
なんでJavaがでてくるんだ?
>>124 XULもJavaもクロスプラットフォーム
JavaXPCOMもPyXPCOMも実際に使われてる例は知らないが、C++は王道中の王道だろ。
ただ各プラットフォーム用のバイナリを配るのが面倒だ。
Cで作るにはC++のABIに気をつけないといけないはず。
Adaをつかいまつ
JavaScriptよりLiveScriptのほうがかっこいいじゃん
prefwindowではonbeforeunloadイベントは使えませんか?
それから、XULのどの要素がどのイベントを持っているかはどうやって調べますか?
>>131 それって何か大事なの?
ってか yukichi って誰?
何やらかしらの?
ggr
tumblr を貼る意味が分からない
>>135に追加。
福澤俊とは - はてなダイアリー
http://d.hatena.ne.jp/keyword/%CA%A1%DF%B7%BD%D3 >自分が知らなければ、要出典タグを貼りに行く、もしくは「こんな単語をはじめて聞いた」などの発言を執拗に繰り返す利用者の一人でもある。
>2007年5月6日には問題のエントリーに投稿されたキリカに対するKasumoererのコメントを一括削除したことで話題となる。
>JCA-NETなどの極左団体および特定アジア団体とウィキペディア日本語版の関係は、よほど知られたくない事項の様子である。
この Kasumoerer って奴の私怨で FA ?
FA
141 :
デフォルトの名無しさん:2007/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();
のような感じで使います。
>>141 日本語が入った文字列を getCharPref/setCharPref で出し入れしようとしてないか?
そうなら代わりに getComplexValue/setComplexValue を使うべき。
それと特別な事情がない限り PrefUtil.PREF や PrefUtil.KEY じゃなく
this.PREF や this.KEY にするのが普通じゃないか?
あとgetは型を自動判別してるのにsetは文字列型限定って何か意味あるの?
145 :
sage:2007/07/03(火) 23:01:04
141です。ご指摘ありがとうございます。
>142
現在は日本語はつかっておりません。
また、ご指摘の通りthis.PREFのほうがいいですね。
>143
そんな方法が。参考になります。
>144
特に意味はありません。。getを張り切って作ったけど、結局setでは文字列しか
ありえないな、、と思って手を抜いてしまいましたorz
なお、不具合に関しては別の箇所が原因だと言うことがわかり一件落着しました。
ご協力ありがとうございましたm(..)m
うっふん
event.screenX, event.screenYを使わずに現時点のマウスカーソルの位置を知る方法ありますでしょうか?
>>147 xpcomコンポーネントを作ればできるよ
overflow:autoでスクロールバーを表示させた要素のスクロール位置を
動的に調整することはできますか?
よーし、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;
}
}
}
target に textbox が存在しない事がエラーの原因なら
value を参照する前に textbox が null でないかチェックすればエラーは回避できる
if (target.textbox && target.textbox.value)
>>151 ありがとうございます。エラーが出なくなりました。
これで Fx でググったりサイト眺めながら拡張を見れます。
ありがとうございました。
jQuery だとか prototype.js だとか、そっち系のライブラリはもういいよってくらい氾濫してるくせに、
ぜんぜん XPCOM をラップするライブラリがないぜ?いや、jslib とか mozlib とかはあるけどさ・・・
Components だか Interfaces だか、 ns...みたいなプリフィックスとか見るだけで吐き気がするぜ。
XULRunner だってさ、.xul を D&D で投げるだけでとりあえず実行してくれたら、お手軽で素敵じゃないか?
つ FUEL
一応Firefox2にもバックポートできるようにするみたいなこと言ってたような気がする…
文字コードの自動判定ってどーやればいいんだろーか
>>155 Mozillaのuniversalchardetはscriptableじゃないインターフェイスらしいので、それをどうにかするか、それをCライブラリ化したものがあるからそれを使うか……。
>>156 あら、そーなんだ。うーん、複数の文字コードでとりあえず一度変換させて、
U+FFFDの数で推測する手もなくはないけどねぇ。貴重な情報どーもdクス。
mozStorageにデータを入れて、サイドバーにmozStorageから取得したデータを
表示させたいと思っています。
もし各ウィンドウのサイドバーごとにデータベースへの接続を持たせると、複数のウィンドウが
開かれている状態などでは、同時にデータベースへアクセスする可能性が有るので
http://developer.mozilla.org/en/docs/Storage の
You can not access a single database from multiple connections from different threads.
に引っかかると思います。
こういう拡張を作成する場合、どのようにしてmozStorageを扱うのが良いのでしょうか?
JSからXPCOM経由でデータベース接続する分には「different threads」には引っかからないのでは。
もちろんFirefoxのプロセスはひとつだけという条件付きですけど。
各 window は個別にスレッドを持ってたと思う。
components/ に その拡張専用の storage service(singlton) を持つ
JS XPCOM をつくっておいて、
サイドバー XUL からはそのサービスを介してだけアクセスすればいいんじゃないかな。
Places(history,bookmarks) もそんなかんじだし。
161 :
158:2007/09/12(水) 03:01:47
なるほど、XPCOMを作れば解決出来そうですね。
調べてみます。有難うございました。
>>163 textbox に onkeypress="if(event.keyCode==13)hello()" とかすれば?
ところで DOM_VK_RETURN じゃなく DOM_VK_ENTER が出てくる環境ってあるの?
>>164 おおできたできた!ありがとうございます。
っていうかこれjavascriptスレで聞いたほうがよかったかもですね。
167 :
164:2007/09/19(水) 21:06:07
>>163 用途次第では onchange の方が適切な場合もあると思うけどまぁいろいろ試してくれ
大昔に野良拡張を作った経験があります。
色々な所で Gran Paradiso のことを目にするようになったので
先ほどα8を入れてみました。
ローカルディスクから拡張機能をインストールしようとしたらはねられて困ったのですが
とりあえずupdateURLを削除した状態で開発すれば良いんですかね。
色々と面倒になりましたな。
about:config 風に、ロケーションバーに about:hogehoge と打ち込むと、
カレントタブの中に chrome が読み込まれるような拡張というのは
どんなことをヒントにすればよいですか?
>>170 MR Tech About:About をパクればいいんじゃないか?
>>171 非常に参考になりました。ありがとうございました。
Browser#reload()でページのリロードができると思うんだけど、リロードじゃなくて、
ダウンロード済みのソースからDOMの再構築ってできないのかな?
リロードしちゃうとサーバに再リクエストしちゃうんで、セッション管理しているサーバで
ちょっと困っているんだけど。
DOMParserとか使ってみるといいかも
document.bodyをcloneNodeでコピーしておいて差し替えるとか、
あるいはdocument.body.innerHTMLをコピーしておいて差し替えるとか
微妙に誤爆しました。ごめんなさい。
XULRunner って響きが取っ付き易くないからいっそ Prism だったらよかったのにと思う11月の秋
やっぱむずかしいよな。言うほど簡単じゃねぇよ、これ。
様々な難解技術の集合体じゃねえか。
browser.jsとか、タブ系拡張とかでの
content.focus(); と、_content.focus(); との違いは何?(頭のアンダーバー)
元のやつを上書きしてるって事?
大した事じゃないのですが、ちょっとお聞きしますね。
XPCOMを作っていて名前をどう付けるのが良いのか迷っています。
具体的にはContractIDとインターフェイス等の名前のプレフィックスについてで、
ContractIDは、いくつかの拡張を見たところ全部@mozilla.org/some-component;1となっていました。
プレフィックスは、Mozillaのソースではnsで始まるのが慣習のようでした。
Mozillaプロジェクトと直接関係がない拡張なのに、何故この様(mozilla.orgとかnsとか)に
なっているのか分かりません。
皆さんならどうされますか/してらっしゃいますか?
関係ないのにns〜とか@mozilla.orgとか書くのは厳密には詐称だよね
Mozilla内の物でもインターフェース名がmozI〜という物はいくつかあるし
適当に付けたらいいんじゃないの?
>>186 XPCOMだけにxpcIxxx〜とかcpIxxx〜とかどうよ?ださいけどな。
(*゚ω゚)ノ∩へぇへぇ
自サイトではなくAMOでしか公開していない場合のコントラクトIDは?
同じ。AMO かどうかと、contruct ID は関係ない。
194 :
186:2007/11/14(水) 18:01:51
やはり、独自のprefix/ContractIDを付けた方が良さそうですね。
皆さん、助言ありがとうございます。
ここが適切かわかりませんが質問です。
IEで動作するActiveXのプラグインがあるのですが、これをFirefoxへ簡単に移植する方法はないでしょうか?
Windows以外のOSへの移植は考えていないので、ラッパーのDLLか拡張を作るという手でも構いません。
今、外部テキストファイルの読み書きをしているんですが、
全角文字を書き出しor読み込みすると文字化けしてしてしまいます。
文字コードの変換なども試したのですが上手くいきませんでした。
何か解決方法はないでしょうか?
どうやってどううまくいかなかったのかを書かないと
エスパーにしか解決方法はわからないと思われ
Fxのエクステンションを作ろうと思ってFxまとめWikiのチュートリアルを見ながら作業してたんですが、
contents.rdfってのは何のためにあるんですか?解説がなく、MDC見てもよく分からなかったんですが。
まとめにも書いてあるじゃないか
>>202 ありがとうございます。最新のFxをターゲットにする場合は不要なんですね。
ちょこちょこと拡張をいじったりしてみてます。
Firefox2.0.0.11なんですが、タブを右クリックした場合の
コンテキストメニューを拡張するにはどうしたらいいのでしょう・・・
で、あなたはまずご自分で何を調べられて何を試されたのですか?
>>205 CopyUrlPlusとTabMixPlus、ContextMenu拡張のアーカイブを展開して
内部を調べてみました。
しかしCopyUrlPlusではタブを右クリックしたメニューの拡張を行って無く、
TabMixPlusとContextMenu拡張は読み切れませんでした。OTZ
MDCのコードサンプル、DOMインターフェースリファレンスも調べましたが、
該当のものを見つけられませんでした。
>>206 userChrome.js のスクリプトあされば出てくるが…まぁ大ヒント。
document.getAnonymousElementByAttribute(gBrowser, 'anonid', 'tabContextMenu');
208 :
デフォルトの名無しさん:2008/01/10(木) 00:42:41
久しぶりにXUL弄ろうとおもって遊んでいたんですが
いつの間にかmakeURI関数って使えなくなっていませんか?
Mozilla開発コミュニティは相変わらずのクオリティだなと思った。嫌いじゃないけど
サイドバーを使うFirefox拡張の作り方がさっぱり分かりません。
どこかにサンプルとかありませんか?
sageとか
>>212 おお、ありがとうございます!
すっかり見落としてました
var listbox = document.getElementById('searchResultList');
for(var i = 0; i < 10; i++) {
var listitem = document.createElement('listitem');
listitem.label = "foo";
listbox.appendChild(listitem);
}
このようなコードを実行すると、listboxにアイテムは追加されるんですが、真っ白でlabelの内容が表示されません。
DOM Inspectorで見ればちゃんとlabelにfooが入ってるんですが…
どこに問題があるんでしょうか。
appendChild(...)でなくappendItem(...)としてみる
>>215 ありがとうございます。appendItem()でできました。
richlistboxだとappendChild()でできたのでついlistboxでもできるのかと思ってました。
groupbox
- button
- button
- button
みたいな感じに、ある要素の子要素が複数あるときに、これ全部を一気に取り除く方法ってありますか?
やっぱりひとつずつ消してかなきゃダメ?
DOM2 Rangeつかうといいかも
>>218 ありがとうございます。
var range = document.createRange();
range.selectNodeContents(element);
range.deleteContents();
でできました。
220 :
デフォルトの名無しさん:2008/01/31(木) 11:46:40
Javascriptでaddonを書いています。
このaddon内部から、起動プロファイル名を取得することは可能でしょうか?
(firefox -P fuga の fugaを取得)
モノはFirefox 2.xです。
nsIToolkitProfileServiceを使えば可能。
toolkitのprofileSelection.jsが良い例題になる。
222 :
220:2008/01/31(木) 13:30:22
おおおズバリ。
名回答TNX.
お前が見た限りの情報で分かるエスパーはいねーよ馬鹿
教えて欲しいならコード載せろ
>>225 すべての構成ファイルの文字コードUTF-8のBOMなしかどうか確認
227 :
220:2008/02/01(金) 18:09:46
profileSelection.jsは起動時にでてくるプロファイル選択画面みたいだ。
const C = Components.classes;
const I = Components.interfaces;
var p = C["@mozilla.org/toolkit/profile-service;1"];
alert(p);
ここでいきなりundefinedなのだが。
なんででしょう?
いや、classes配列にないのはわかるが、他のサービス(directory-service)とかだと
getService()できる。
firefox/components/*
firefox/chrome/*
は一応調べた。grepだけど。
>>226 すべての構成ファイルの文字コードを改めてUTF8BOMなしで保存し、
インストールしてみましたがやはりできませんでした。
エディタはTerapadを使っています。
>>228 >にすべての構成ファイルの文字コードを改めてUTF8BOMなしで保存し、
>インストールしてみましたがやはりできませんでした。
chrome.manifestをUTF-8のBOMなしで保存したら動作するけど...
エディタが勝手に変なことするんじゃない?
スレチな質問だとは思うんですが
UTF-8BOMなしで保存して、開きなおしたらUTF-8BOMなしで開くものですよね?
TerapadでもEmEditorでも開きなおすとSJISになってしまうんです。
他のUTF-8のファイルはちゃんとUTF-8で開くのですが...
BOMついてるのはバイナリエディタで確認できる
でchrome.manifest BOMついてますね。
エディタの件だが, 自動判定はあまり信用しない方がよろしいかと,
特にファイルに含まれる文字数が少ない場合は失敗する確率が高い,
BOMついてないUTF-8は特に判定が難しい。
使用エディタ変える方がいいんじゃない, 秀丸エディタとかNotepad++とか
>>230 TeraPadはUTF-8(BOMなし)を扱える。
君のTeraPadの設定がおかしい可能性が高い。
オプションの文字コード関係の設定をよく見直して。
これ以上はTeraPadスレで。
連投失礼いたします。
直接extensionsフォルダから拡張を削除しもう一度インストールしたらできるようになりました。
どうもお騒がせしました。
235 :
220:2008/02/06(水) 14:31:27
おまえらデバックする時どうしてる?
自分は書庫化し直してるんだが、これって一般的な方法?
どうも面倒くさい
>>236 >>237 の開発用の設定にして、jarに圧縮せず、-console オプションを付けて起動。
どもども
240 :
デフォルトの名無しさん:2008/03/01(土) 09:21:56
xulをプラットフォームとして使おうと思ったら、Firefox起動しない状態でも、ファイルをダブルクリックしたらXULアプリケーションが起動するような環境が必要だと思うのだが・・・
Firefox3でopenPopupの直後だとpanelのサイズが取得できない……。
2ではshowPopupの直後でもpopupのサイズ取得できたのになあ……。
それでもなんとかして取得したいんだが、どうすればいい?
欲を言えば、openPopup(showPopup)の前(非表示状態のとき)に
取得できるとなお良いんだが。
要はウィンドウ中央に表示させたいんだよね。
ポップアップは非同期になったんじゃなかったけ?
popupshowingかpopupshownで取得できるんじゃない?
245 :
デフォルトの名無しさん:2008/03/10(月) 03:47:11
>241
…空が、青いなぁ…
orz
246 :
デフォルトの名無しさん:2008/03/11(火) 12:16:32
もともとのステイタスバーの上にテキストボックスとボタンを配置したいのですが
hboxにid属性をつけると表示されません。どうしてでしょうか?
以下ソースです。汚いですが。。。
<?xml version="1.0"?>
<overlay id="inputhelperOverlay"
xmlns="
http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<popup id="contentAreaContextMenu">
<menuitem id="show_InputHelper" label="InputHelper"
insertafter="context-undo" oncommand="show_IH()"/>
</popup>
<script src="Overlay.js" />
<hbox insertbefore="status-bar" id="ihbox">
<textbox multiline="true" width="400" rows="4" />
<button label="Copy"
oncommand="copy(); return false;"/>
</hbox>
</overlay>
</overlay>
<overlay id="inputhelperOverlay"
xmlns="
http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<popup id="contentAreaContextMenu">
<menuitem id="show_InputHelper" label="InputHelper"
insertafter="context-undo" oncommand="show_IH()"/>
</popup>
<script src="Overlay.js" />
<window id="main-window">
<hbox insertbefore="status-bar" id="ihbox">
<textbox multiline="true" width="400" rows="4" />
<button label="Copy"
oncommand="copy(); return false;"/>
</hbox>
</window>
</overlay>
これでどう?
>>247,248
できました!ありがとうございます!
addons.mozilla.org について教えてほしいのですが
・作者の項目にニックネームを表示する方法
・登録した拡張の削除の仕方
これらはどうやってやるのでしょうか?
作者がニックネームの人も居るので出来るかと思ったら
アカウントを作ったときの姓名が表示されてしまうし、
ファイルを削除は出来ても、登録された拡張は削除できないし、
わけわかめな状態になってます。
ログインした状態で右上の「アカウント」って所からニックネーム設定できるよ。
あと登録された拡張の削除はシステム的にできないみたい。
ファイルを消せばユーザからは見えなくなるのでそれで我慢するしかないぽ。
漏れなんて、この間からシステムの不調でアップロードが上手く行かなくて
管理画面上ではIncomplete - No Filesで同じバージョンの項目が3つ並んでる。
252 :
250:2008/03/17(月) 20:20:17
>>251 レスどうもです。
アカウントでニックネームを設定してみたのですが、
開発者用コンパネでは作者に姓名の方が表示されています。
作者の追加でも、アカウントから勝手に作者名を探すみたいで、
名前を自由に入れたりは出来ないみたいだし。
とりあえず姓名の方を適当に変更する事にします。
削除は出来ないんですね。
自分も同じバージョンのIncomplete - No Filesが3つ並んでますw
webサービス開発系のプログラマーは目の的!
firefox開発者って対して取り上げられていなくてかわいそうに
だっせぇwww
めのまと?
めのてき(←なぜか変換できない)
目の敵と目の的の関係は既出と外出のそれに同じか。
Firefox 3のbrowser.jsのズーム機能のコードを眺めていたら
こんなふうにdeleteを使っているのですが、どういった意味があるのでしょうか?
// Content Pref Service
get _cps FullZoom_get__cps() {
delete this._cps;
return this._cps = Cc["@mozilla.org/content-pref/service;1"].
getService(Ci.nsIContentPrefService);
},
御回答ありがとうございます。でも、なぜこうやらないんですか?
get _cps() {
return Cc["@mozilla.org/content-pref/service;1"].
getService(Ci.nsIContentPrefService);
},
getterが最初の一回のみ実行されるようにじゃないの
delete this._cps; によってgetterが削除されて
以降はthis._cpsに格納されたnsIContentPrefServiceを参照するようになる
なるほど。ありがとうございました。
gzip圧縮されたdiskキャッシュをnsIStreamConverterServiceの
convertで展開しようとしてるんだけどうまくいかのよね。
Firefoxを多重起動したときに連動するように
したいんだが、どうすりゃいいんだ??
265 :
デフォルトの名無しさん:2008/06/15(日) 18:24:36
RDFから作成したlistboxをもう一度、RDFから作成しなおす方法はありませんか?
267 :
デフォルトの名無しさん:2008/06/16(月) 22:18:32
ありがとうございます。
builder.rebuild()ではファイルからの再読み込みはしないようです。
別の方法を考えます・・・・。
>>267 多分nsIRDFServiceのUnregisterDataSourceでいったんデータソースを開放しないとダメ。
leakmonitorを入れてみたら、以下のようなコードもリークしてるよと
報告されました。
document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", function(e) {
if (e.target == this) myextension.showContextMenu(this);}, false);
やっぱりちゃんと handleEvent メソッドを備えたオブジェクトをリスナーとして登録して、
window の unload 時に removeEventListener した方がいいんでしょうか?
まだまだ良く分かっていないので、とんちんかんな質問かもしれませんがよろしくお願いします。
>>269 handleEventを使う必要はないと思うけど
removeEventListenerはしておいた方が安全そう
<tabbox id="tabBox" orient="vertical" flex="1">
<tabs>
<tab label="tab1" id="tab1"/>
<tab label="tab2" id="tab2"/>
<!-- 以下、tabたくさん -->
</tabs>
<tabpanels id="pagePanels" flex="1">
<tabpanel id="1">
<html:iframe type="content" id="iframe1" src="〜" flex="1"/>
</tabpanel>
<tabpanel id="2">
<html:iframe type="content" id="iframe2" src="〜" flex="1"/>
</tabpanel>
<!-- 以下、tabpanelたくさん -->
</tabpanels>
</tabbox>
このようなXULをウィンドウコンテント領域に表示させると、
多数のタブのブラウザに入りきらない部分が見切れてしまい、
矢印キーなどでフォーカスは当たるが表示されない状態になってしまいました。
また、それに合わせてtabpanelも広がってしまい、右端の部分が表示されません。
これを、タブを多段表示にする、またはスクロールバーなどを出す、など
何らかの方法でブラウザ内に収まりきるようにしたいのですが
どうしたらいいんでしょうか?
flexを外したりorientをhorizontalにしたりしても
tabpanelが縮んだりタブが縦に広がったりとうまくいきません。
また、cssでwidth:100%などしても効果がありませんでした…。
それこそtabbrowser.xmlを参考にしてみたらいいんじゃない?>スクロール
Tab Mix Plus等のコードを見てみれば多段表示についてもヒントが得られるかと。
レビューでバグについて報告があったんだけど、
自分の環境では再現されない。
この場合どういう反応をすればいいんだろうか。
>>274 どうも。とりあえず
他のアドオン無効でチェックしてみて、まだ問題あるなら連絡してくれ
という意味(のつもり)の文を書いといたよ。
あんだけの文章でどれだけ時間掛けてるんだ俺……英語力のなさに失望orz
ボタンを通常のクリックしたときとミドルクリックしたときで実行する処理を分けたい場合
どうすればいいですか?
oncommandでevent.buttonの値を調べてもundefinedとなってしまいます。
onclickでやるしかないんじゃないかな
通常クリック→oncommandで捕捉
ミドルクリック→onclickで捕捉(通常クリックは無視)
>>277 その方法でいけそうです。ありがとうございました。
280 :
279:2008/09/25(木) 04:45:25
誤爆した。
Visual Basic2008にXULRUNNERを組み込もうとしています
表示まではあっさり行ったのですが、プログラムでブラウザをコントロールするところがうまくいきません
ページ上の各要素に対してコントロールしたいのですが
IEのように、各種Htmlコントロールでコントロール出来ないのです
ここからサンプル--------------------------------
'ブラウザメモリ確保
IE = New WebBrowser
Moz1 = New AxMOZILLACONTROLLib.AxMozillaBrowser
Moz2 = New AxMOZILLACONTROLLib.AxMozillaBrowser
Dim heOut As HtmlElementCollection
heOut = Moz2.Document '代入した瞬間にエラー
'heOut = IE.Document.All'うまくいく
heOut.GetElementsByName("srchtxt")(0).InnerText = "検索用です"
heOut.GetElementsByName("srchbtn")(0).InvokeMember("click")
ここまでサンプル--------------------------------
HTMLコントロールはIE用に用意されているので、何らかのキャストが必要かと思うのですが
MOZILLA側で、各要素をコントロールするにはどうすればいいのでしょう
MOZILLAのメソッドを色々探しているのですがなかなか見つからず難儀しています
HtmlElementCollectionにHtmlDocument代入しようとすればエラーになるのは当然では
あと微妙にスレ違い
いやまあ・・エラーになって当然なんだけど
Mozillaでも似たようなクラス無いのかなぁ・・・と。
目的はプログラムから直接画面上のテキストやらボタンやらにアクセスしたいんです
すれ違いなの?
283です
ありがとうございます。
そんなコンポーネントを作ってる人がいるとは。
週末に試すようにします。
姉妹スレ できけってことかと思うんですが、ブラウザ自体を作りたいわけではなかったので・・・
あ、でもこちらは拡張の作り方か・・・すいません。
>>286 マルチプラットフォームのようですが、何で作られたんですか?
あと、Mac 版はないのでしょうか?
288 :
286:2008/10/04(土) 19:56:30
Firefox 3があるなら
Firefox -app application.ini で起動できるんじゃない?
下のプログラムなんですが、WEBサーバに配置してみると動かなくなります。
signed.applets.codebase_principal_supportをtrueにする以外の方法(正規の方法?)
で動くようにするにはどうしたらよいのでしょうか?
署名スクリプトなんでしょうか?・・
<html>
<head>
<title>Execute Any Process</title>
<script>
function executeFile() {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var file =
Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("c:\\windows\\notepad.exe");
var process =
Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init(file);
var args = ["test.txt"];
process.run(false, args, args.length);
} catch (e) {
alert(e);
}
}
</script>
</head>
<body>
<input type="button" value="Run a process" onclick="executeFile()"/>
</body>
</html>
正気?
292 :
デフォルトの名無しさん:2008/10/20(月) 01:00:52
なんで?
>>290 file.initWithPath("c:\\windows\\notepad.exe");
こんなことやろうと思うのはXULだからだろうか。
いや、別にいいと思うんだ。いろいろ自動化できるし。
でもなんでサーバーに置こうとか思うんだろう。
無理に決まってるだろ。セキュリティ的に。
俺は何を言おうとしたんだろう。辺なののこって他。
ーーーーーーーーーーーーーーーーーーーー
PyXPCOM Mozillaの3万近いファイルを全部ビルドせないかん
→ javaXPCOM これもいっしょ
→ XULRunner HTMLのような定義ファイル+javaScript
XPConnectなら標準機能だが、JavaScriptのみのサポート
294 :
デフォルトの名無しさん:2008/10/27(月) 17:02:35
Firefoxタブの挙動の検知を利用したプログラムを作成したいと考えているのですが、
どうすればそのような検知が可能でしょうか?
現在何番目のタブを開いている(閉じた)であるとか、タブの位置を何番目に移動したなどを検知したいです。
そのような手法、あるいは似たプログラム等ご存知の方教えて頂けないでしょうか。
よろしくお願いします。
296 :
デフォルトの名無しさん:2008/10/28(火) 12:16:08
>>295さん
ありがとうございます!参考にして作成してみます。
297 :
デフォルトの名無しさん:2008/11/07(金) 09:59:13
about:blankが表示される度に実行するプログラムを作成したいのですが
どんなコードを書けばできるのかわかりません。
ページの読み込みを監視するとか?
新しくタブを開いたらまずabout:blankが表示されるからその分は除外しないといけないけど。(canBackを見るなどして)
299 :
297:2008/11/07(金) 11:23:54
>>298 すみません、言葉が足りませんでした。
about:blankの判定する方法がよくわからないんです。
loadURI == null
で試してみたのですが
ページの読み込みってProgressListenerを使えばいいんでしたっけ?
var tab = gBrowser.selectedTab;
if (tab.linkedBrowser.currentURI.spec == 'about:blank' && tab.linkedBrowser.sessionHistory.count > 1) {
...
}
任意でabout:blankを読み込んだ時はこれで判定できるはず。新規タブの場合も含めるなら二つ目の条件は不要。
ページ読み込み監視はProgressListenerを使ってもいいし、gBrowserでDOMContentLoadedイベントを拾ってもいけるんじゃないかと。
gBrowser.addEventListener('DOMContentLoaded', function(aEvent) { alert(aEvent.originalTarget.defaultView.location.href); }, true);
>>300 ありがとうございます。参考にさせていただきます。
卒研でXULに挑戦しているのですが助かりました。
質問です。
1年ぐらい前にXUL勉強してて、最近やり直そうと思い
https://developer.mozilla.org/ja/XUL_Tutorial ↑見ながら再び勉強してるんですが、
chrome以下にディレクトリ作って、manifestファイル置いただけでは
例えば以下のように、
chrome://findfile/content/findfile.xul
chrome経由でブラウザで確認ってできなくなってますか?
拡張としてインストールしてからでないとだめなんでしょうか。
manifestファイルはどう書いた?
以下のように書いてあればいけるはず
XULファイルの場所:
C:\Program Files\Mozilla Firefox\chrome\testfiles\findfile.xul
manifestファイルの場所:
C:\Program Files\Mozilla Firefox\chrome\testfiles.manifest
testfiles.manifestの内容:
content findfile testfiles/
なんでprogram files直下に置くの?
プロファイルのextensionsディレクトリにおけばいいよね?
>>303 >>304 レスサンクス。
マニフェストファイルには、パスを
file:///findfile/content/
て書いてたんですが、file:///除去して、後文字コード見直したらうまくいきました。
もう解決したようだからいいんだけど、file:に書くのは絶対パスだよ。
>303の位置だったら、相対パス指定で testfiles/ と書いている部分を絶対パスで書くと
file:///C:/Program%20Files/Mozilla%20Firefox/chrome/testfiles/
になる。
Firefox 3.1b1で
XULのtextboxのwrap="off"が反映されず、右端で自動改行されてしまいます。
CSSのwrap周辺が変更された影響だと思うんですが
どう対応すればいいんでしょうか?
まったく同じコードで3.0.4では自動改行されません。
style属性でwhite-space:pre;としても変化ありません。
君が試しているのがベータ版だということが認識できていれば、
とるべき行動は自ずと明らかではないだろうか。
309 :
307:2008/12/02(火) 17:08:11
>>308 ?????
バグ報告ですか?
バグならバグでいいんですが
そう断定するにはそれなりに情報を集める必要があるので
・既知の問題かどうか
・試してみるべきことはあるか
・バグの可能性があるか
・ハック的なものでもいいので回避策があるか
などの次のステップにつながる情報を
いただけるかと思い質問してみたんですが・・・
ベータを扱っててどうすればいいんでしょうかもクソもないだろ
ベータを何だと思ってんの?馬鹿なの?死ぬの?
>>311 bugzillaはざっと見てみましたがwrap関係の報告はあるものの
今回の件に該当するものがないっぽいです。
で同じような状況の人がいないかなーと書き込みを
こういうのもダメ?
>>310
>>307 以下をExample.xulと言う名で保存, FxにD&D,
別に問題ないように見えるけど, 何が問題でどうしたいの?
バグ報告するにしてもそれなりにしないと相手にしてもらえないよ。
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window id="example-window" title="Example"
xmlns:html="
http://www.w3.org/1999/xhtml"
xmlns="
http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<textbox multiline="true" wrap="off"
value="XULのtextboxのwrap="off"が反映されず、右端で自動改行されてしまいます。CSSのwrap周辺が変更された影響だと思うんですがどう対応すればいいんでしょうか?"/>
</window>
>>313 試しました。
3.0.4では自動改行されず水平スクロールバーが出ます。
3.1b1では自動改行されて水平スクロールバーは出ません。
Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.1b3pre) Gecko/20081201 Minefield/3.1b3pre
問題ない
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5pre) Gecko/2008120105 GranParadiso/3.0.5pre ID:2008120105
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20081201 Shiretoko/3.1b3pre ID:20081201204426
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20081201 Minefield/3.2a1pre ID:20081201202728
で試したけど, 全部同じ結果で問題ないよ。
>>314 3.1b1って何? そんなどこにもないぞ
古すぎるものでバグ出されても無死されるだけだぜ
人に言われないと古いという根本的な問題に気付かないような人はベータ使うのやめた方がいいと思うよ
XULの拡張を作ってます。
タブごとのセッション情報を保持したいと思っているのですが、どんな方法があるのでしょうか。
Firefoxのインストール先の componentsフォルダにある
nsSessionStore.js の中を見るのがいいと思う
AMOの統計ダッシュボードの今週のデータおかしくない?
確認したアドオンすべてでアクティブユーザ数が
軒並み-95%ぐらいになってるんだが
水曜に集計してデータに反映されるまでタイムラグあるから
そのうち正常値にもどるかと思ってたが今のとこ変化なし。
Firefox3のJavascriptのXPCOM内で
与えられたあるフォルダのサブフォルダも含めた
ファイル一覧を取得しようとしています。
現在再起処理では問題なく実現できていますが
ファイル数が多いと重くなってしまいます。
非同期で処理したいのですが何を使えばいいんでしょうか?
326 :
325:2008/12/16(火) 06:09:26
自己解決しました。
nsITimerでいけますね。
327 :
デデフォルトの名無しさん:2008/12/19(金) 12:59:03
XULでツールバーにボタンをつくってそれに戻る、進むの処理をさせた
いんですけど、どうすればわかりません。よければ教えてください。
よくないので教えません
つか、戻る進はもうあるじゃん
>>327 command に
Browser:BackOrBackDuplicate
Browser:ForwardOrForwardDuplicate
を登録すればよいんジャマイカ
後はその他色々
「パスみえ」のようなUIを実現したいのですが、どうしたらいいか見当もつかず困っています
何かヒントをいただけませんか
パスみえとやらのソースをもらって解析してみればいいんじゃないでしょうか
>>331 パスみえを解析してもXULプログラミングは出来ないと思います
>>332 D&Dでドロップターゲットを取得するところまでが分かりません
右クリックは使用しません
似たような拡張のコードは見たのか?普通にあると思うけど
http://developer.mozilla.org/Ja/DragDrop/Drag_and_Drop 汎用にするとしたらdragendでドロップ位置を取って座標で要素を取得すればいいと思ったけど
Firefox 3.0.5で試してみたけどdragendではscreenX, screenYはどちらも0になるので難しそう。
Firefox上で表示されてるパスワード入力欄についてだけパスみえのように動作するアドオンを作りたいのなら
こんな感じでどうだろう。
1.draggestureかdragstartイベントで以下の事をやる。
・application/x-pasumie-targetのような独自の型でデータを登録する。
・全ウィンドウの全フレームのパスワード入力欄に、この型のデータを受け取るdragdropかdropのイベントリスナを登録する。
2.ドロップ先要素のdragdropかdropのイベントリスナでドロップされたパスワード入力欄を特定して、パスワードを表示させる。
3.ドラッグ元要素のdragendで、全ウィンドウの全フレームのパスワード入力欄に登録したイベントリスナをremoveEventListenerする。
>全ウィンドウの全フレームのパスワード入力欄に
全ウィンドウの全フレーム だけでよかったスマソ
337 :
330:2008/12/22(月) 20:42:18
>>336 今回はまさにFirfox内の要素のみを対象として考えていました
大変分かりやすい解説をありがとうございました
コマンドラインのフロントエンドを作ろうとしてます。
nsIProcessだと実行しかできないようですが、
標準出力を拾う方法は無いでしょうか?
>>339 ありがとうございます。
連休にでも読んでみようと思います。
しかし、標準のままじゃできないんですね…
341 :
デフォルトの名無しさん:2009/01/16(金) 15:03:56
contentフォルダにsample.xulとsample.jsファイルをいれてます。
sample.jsのプログラムがうまく動きません。他に必要なファイルがあれば教えてください。
try {
Components.classes["@mozilla.org/browser/sessionstore;1"]
.getService(Components.interfaces.nsISessionStore)
.persistTabAttribute('hoge');
} catch (e) { }
browser.sessionstore.enabled が false のときエラーになると聞いて try-catch したのに
どっちにしろ謎のエラーが・・・
ちゃんと pref 見ないとだめか
FUELはただのラッパだよ。正露○じゃないよ。
そういえばFirefox 2系が公式にサポート切れたからFUELがんがん使ってももう問題ないんだな
そういう問題じゃないだろ
なんで mozcrt19.dll 存在するの?
malloc を書き換えてるから。詳しくは firefox jemalloc でググれ
350 :
デフォルトの名無しさん:2009/02/10(火) 15:19:59
履歴を表示できるのですが、その表示されたURLをクリックしてもそのサイトに移動しません。
HTML要素を追加したがうまくできないです。誰か教えてください。
まず質問を他人にも理解できる日本語で書き直してください
次にスレッドタイトルを読み、質問するのに適切なスレッドであったか確認してください
真性だな、こりゃwww
StorageのAPI使ってplaces.sqliteから情報を取り出す処理を書いています。
Firefox3.0ではopenDatabaseで新規に接続ハンドルを作る必要があると思いますが、
作った接続ハンドルは用がなくなったらすぐにcloseした方がいいですか?
それとも次回使うときのためにポインタを保持しておいても問題ないですか?
places.sqlite のDBハンドルを close すると bookmark が追加変更できなくなったりしない?
保持してても問題ないと思う。
Firefox3.1だとAPIによってハンドルが一本化されているので、
closeするとブックマークが使用できなくなりますね。
ありがとうございました。
コマンドラインから
firefox.exe -chrome "c:\app.xul"
とすれば単体でXULアプリとして起動できますが
このとき以下のようにxulファイル以外の引数を同時に渡し、
firefox.exe -chrome "c:\app.xul" "hoge" "foo" "bar"
app.xul内でwindow.arguments[n]としてアクセスできませんか?
window.arguments.lengthはなぜかいつも5で、中身は全部nullです。
>>357 あーまさにこれです。
ありがとうございました
359 :
デフォルトの名無しさん:2009/02/18(水) 18:40:51
履歴をツリー状に表示するアドオンもしくはそのようなサンプルプログラム
を載せているサイトを教えてくださるとうれしいです。
履歴をツリー状にって・・・Firefox自体のコード見たらいいんじゃないの?
サイドバーとかブックマークの管理とか
-no-remoteで別インスタンスで起動しているウィンドウ間で
データをやりとりする方法ってありませんでしょうか?
362 :
デフォルトの名無しさん:2009/02/26(木) 16:24:22
現在開いてるwebページのURLを取得して表示させるプログラムをXULでつくりたい
のですが、何か良い参考サイトやプログラムありませんか?
Firefoxのロケーションバー
>361
ソケット通信使うのが正道だと思う
>362
Firefoxのメインウィンドウの中なら
gBrowser.currentURI.specかcontent.location.hrefで
今開いてるページを取れる
Firefox3で終了なのか再起動なのかはどうやったら判定できますか?
quit-application-granted 時に
終了か再起動かで処理を分岐させたいのですが
>>366 できました。
本当にありがとうございました!
368 :
デフォルトの名無しさん:2009/03/05(木) 14:24:48
ブラウザやwebサイトの読み込み完了時にスクリプトを処理するにはどうすればいいですか?
xulファイルに
window.onload = "aaaa();" //aaa();は作った関数
と記述したのですがうまく動作しません
>>368 JavaScript本を買って一から勉強し直してください
370 :
574:2009/03/05(木) 22:56:18
正解は
window.onload = aaaa;
しかし、この次元で躓いているとXUL関連やFIrefoxの拡張は敷居が高いよ。
まだまだマニュアルや情報源の情報源の十分に整備された世界ではないから…
From: [370] 574 <>
みっ、みらいじんだー。
もしかしたら、これを期に勉強して成長した、未来の
>>368が、
自らを叱咤激励するために、書き込んだのか〜?
nsILocalFileのdirectoryEntriesのgetNext()で取得できる
ファイルエントリの順番って保障されてますか?
いいえ。
Firefox3のProfileManagerに
アドオンから改造を加えることって可能?
Windowsの自作アプリケーションから、「現在起動中の」Firefox3にクッキーをセットしたいのですが、
どうしたらできるでしょうか?
IAccessible->IServiceProvider->ISimpleDOMDocument->IDOMHTMLDocumentで余裕とか考えていたのですが、
XPCOMがCOMじゃないということに気が付くのに丸2日かけてしまいましたorz
IEばかり使ってきたのでよくわかかりません…
あっ、XULの話題のスレみたいなので他所行った方がいいのかな
正攻法だと無理かも。
IServiceProviderでnsSupportsは取れるみたいなんですが
nsSupports以外の何物でもありませんでした…ダメか…
>>379 nsSupports.QueryInterfaceしてキャストでいけない?
ひょっとしてFirefoxのsqliteはメモリ上にデータベース作成できない?
mozIStorageService.openSpecialDatabase("memory")
>>382 ありがとうございます。
openDatabase(null)
でもいけるみたいですね。
nsIFileでファイルのlastModifiedTimeは書き換えできますが
ディレクトリのlastModifiedTimeは書き換え不可なのでしょうか?
必ず例外NS_ERROR_FILE_ACCESS_DENIEDが発生します。
パーミッションは確認しましたし
そのディレクトリを使用中なわけでもありません。
具体的にやりたいのは
新規ディレクトリ、もしくは既存のディレクトリの
lastModifiedTimeを任意の値に変更する
ということです。
386 :
384:2009/03/24(火) 10:22:49
>>385 とりあえずわかったことはWindows限定の問題だということです。
Ubuntu8.10とLeopard10.5.2では書き換え可能でした。
Win2000SP4/WinXPSP3/WinVista(SPなし)とWin7で同じく
ディレクトリのlastModifiedTime書き換え試行時に
NS_ERROR_FILE_ACCESS_DENIEDが発生します。
Firefox3.0.7で実行しています。
提示されたソースのほうはC++が書けないので
なんとなくしか理解できず原因を特定するのは難しそうです。
何か試してみた方がよさそうなことはありませんか?
>>385 ディレクトリの時刻を変更するには、CreateFile()でFILE_FLAG_BACKUP_SEMANTICSを
指定する必要があるが、それがないから無理だな。
388 :
384:2009/03/25(水) 00:44:38
>>387 つまりLinux版やMac版ではFILE_FLAG_BACKUP_SEMANTICSがあるけど
Windows版ではそれがないのでディレクトリ更新時刻は書き換え
できないということですか?
なぜWindows版だけそんな仕様に・・・?
>>388 そういうレベルの話ではない。
更新時刻の変更はOSによってやり方が全然違っていて、CreateFile()云々は
Windows固有のやり方。それに加えて、WindowsではUnixとは異なり、
ファイルと同じ方法ではディレクトリの更新時刻は変更できない。
390 :
384:2009/03/25(水) 01:45:04
>>389 なるほど。では結論として、
Windows上のXULアプリからはディレクトリの
lastModifiedTimeは変更できない
と考えて問題ありませんか?
妥協策としてnsIProcessでWindowsアプリをrunして変更する
といった方法で対応するしかないという理解でいいでしょうか?
興味本位で聞くけどそもそも何故ディレクトリの更新時間を変更したいの?
それって本当に必要なの?
>>391 2つのディレクトリ間の同期をとる処理を書いています。
それでディレクトリの更新日時まで同期したいわけですが
ディレクトリの更新日時なんてOSどころかファイルシステムによっても
扱いが異なるからあんまり当てにならないよな。
例えばFATだと基本的には 更新日時=作成日時 だが、NTFSはそうではないし。
>>380 すべてのnsXXXで試したけど無理でした
Firefoxのソース見るとやはりISimpleXXXしか返していなかったので
IServiceProvider.QueryInterface(nsSupports)が成功するのはWindowsのバグかも?
>>394 nsSupports.QueryInterface(nsIXXX)
397 :
デフォルトの名無しさん:2009/04/11(土) 11:03:08
mozIStorageServiceのopenDatabaseでデータベースの接続を開始できますが、
逆にデータベースの接続を終了させるメソッドがありません。
openDatabaseの戻り値への参照が破棄されるタイミングで自動的に接続が終了され、
明示的に終了する必要は無いということでしょうか?
mozIStorageConnectionにcloseがあるように見えるけど
>>398 すみません、その通りでした。
mozIStorageServiceのほうしか見ずに言ってしまいました。
JavaScriptのXPCOMで引数があってもなくても良いようなメソッドを定義することはできますか?
IDLでvoid test([optional] in string arg);と定義しても、引数無しでメソッドを呼び出すと、
NS_ERROR_XPC_NOT_ENOUGH_ARGSで怒られます。
モーダルダイアログを開いている親のウィンドウを、ダイアログも含めて閉じることはできますか?
できるかできないかで言えばもちろんできますよ
401 じゃないけどダイアログウィンドウってどうやってアクセスしたらいいの?
getElementsByLocalName 的な関数があればいいんだけど
ダイアログウィンドウのDOMWindowならnsIWindowMediatorで取れるよ
>404
ありがとう調べて見る
XPCOM使ってるAddonを片っ端からダウンロードして、
ソース入りのやつを拾い出せばいいんじゃない?
>>406 どこで詰まってるのか書かないと適切なアドバイスはできないよ
409 :
デフォルトの名無しさん:2009/06/18(木) 15:30:08
履歴から特定のドメインにマッチしたものだけを削除する方法を教えてください
>>409 お前ウザいけど文盲なのか?白痴なのか?
Mozilla Firefox質問スレッド(初心者歓迎)の91
http://pc12.2ch.net/test/read.cgi/software/1244730199/232 232 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2009/06/17(水) 04:45:36 ID:tn9rfOTe0
前スレでレスが付かなかった為、再度質問させてください。
【質問】
・ 指定したサイト(ドメインか下層ディレクトリ指定)のみ履歴を残したいのですが、
それ以外を削除するアドオンもしくは、指定したサイトのみ履歴を残すアドオンを
探しています。
【UserAgent】
・ Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)
【導入しているプラグインとそのバージョン】
・ Adobe Acrobat
・ IE Tab Plug-in
・ Mozilla Default Plug-in
・ Shockwave Flash
【導入している拡張とそのバージョン】
・ Flashblock 1.5.10
・ IE Tab 1.5.20090207
・ Tab Mix Plus 0.3.7.3
【使用しているテーマ】
・ Default 3.0.10
ご存知の方いましたら、教えてください。
よろしくお願いします。
そのレスは「それ”以外”を削除」「指定したサイト”のみ”履歴を残す」
と言ってるので「マッチしたもの”だけ”を削除」と言ってる
>>409とは意味が真逆
なので文盲は
>>410
質問もいい加減だよな, 対象としているクライアントがなにかサッパリだし
>>410 お前ウザいけど文盲なのか?白痴なのか?
test
前スレにも出てましたが、URLからHTMLDocumentオブジェクトって生成できないんでしょうか?
前スレで解決してた方は@mozilla.org/webshell;1を使って生成していたようですが、
xpcshellでwebshell.loadURIを叩くと落ちてしまいます。
xpcshell上でオブジェクトを生成したいのですが何か案はないでしょうか?
417 :
デフォルトの名無しさん:2009/08/14(金) 05:33:25
firefoxアドオンを作成しています。HelloWorldしか作ったことがありません。
onload,onmouseover等のイベントをアドオンから強制的に発行できる方法があったら教えていただけると嬉しいです。
>>416 iframeにソース突っ込むタイプですね。
既存のwindowオブジェクトを探して、そこから
iframeを新たに作成するようですが、そもそもxpcshell上には、
windowオブジェクトが存在しません。(xpcomから探しても無い。。。)
やはり、xpcshell上からの作成は無理なのでしょうか。。。
>>418 あー、そういうのがあるのか
XUL より下はワカンネ
>>419 ありがとうございました。
他にもirc.mozilla.orgで聞いてみましたが無理じゃね?って言われましたorz
421 :
417:2009/08/14(金) 20:04:01
自己解決しました。
ソースコードからイベントに呼ばれる関数を拾ってきました。
失礼しました。
今、WindowsでXULアプリをxulrunnerで作るとしたら、お勧めIDEって何がありますか?
423 :
DownloadWithCravingExplorer.uc.xul:2009/08/28(金) 14:43:02
<?xml version="1.0" encoding="UTF-8"?>
<overlay id="CravingExplorer"
xmlns="
http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" xmlns="
http://www.w3.org/1999/xhtml">
<![CDATA[
function downloadWithCravingExplorer()
{
var craving = new ActiveXObject( "CravingExplorer.Api" );
if ( craving != null) craving.addDownloadItem( gContextMenu.linkURL, "flv", true );
}
window.setTimeout(function() {
var contextMenu = document.getElementById("contentAreaContextMenu");
contextMenu.addEventListener("popupshowing", function(event) {
if (event.target != this) return;
gContextMenu.showItem("id-CravingExplorer", gContextMenu.onLink);
}, 0);
});
]]>
</script>
<popup id="contentAreaContextMenu">
<menuitem
id="id-CravingExplorer"
label="Craving Explorerでダウンロード"
accesskey="D"
oncommand="downloadWithCravingExplorer();" />
</popup>
</overlay>
424 :
DownloadWithCravingExplorer.uc.xul:2009/08/28(金) 14:50:30
>423のような感じで
ActiveXObject経由でローカルアプリのAPIをコールしたいんですけど、
やっぱりfirefoxではActiveXを使用するのは無理なんでしょうか?
(上記を実行させると当然"new ActiveXObject"のところで"in not defined"になります)
この辺もインストールして実行してみましたが、結果は同じでした。
http://code.google.com/p/ff-activex-host/ ちなみに上記のxulは
リンクの右クリックメニューに
「CravingExplorerへその動画をダウンロードする」タスクを追加する
コマンドを追加します。
425 :
DownloadWithCravingExplorer.uc.xul:2009/08/28(金) 14:53:33
>>424 ×:in not defined
○:is not defined
426 :
DownloadWithCravingExplorer.uc.xul:2009/09/02(水) 23:04:17
>>423-425 自己レス。
コマンドラインで引数を受け取ってローカルアプリのAPIをコールするexeを自作して、
それをxul内のスクリプトからprocess.runで呼び出す方法でとりあえず解決しました。
質問です。Thunderbird用にアドオンを作り、そこからFirefoxで
表示しているページのdocumentオブジェクトにアクセスすることは
できますか?
たとえばTunderbird上に届いたあるメールのヘッダの特定の文字列を
Firefoxに表示しているページのフォーム上のあるinputに入れるとか。
428 :
デフォルトの名無しさん:2009/11/11(水) 23:24:56
ffやthunderbirdとは関係ないStandaloneなアプリをXULで開発しようとする場合に
一番参考になる書籍ってなんでしょう?
>>428 >ffやthunderbirdとは関係ない
釣り?文盲?白痴?
fxなんて数あるGecko搭載アプリの一つでしかねーぞ。
>>428 和書だとFirefox関連しかないみたいだし、
洋書でもEssential XUL Programmingくらいしか見つからなかった
現状では一番参考とかいうレベルではなく、それくらいしか選択肢無いみたい
それよりはXULRunnerで動いてるソフトのソースを見た方が参考になると思う
http://ja.wikipedia.org/wiki/XULRunner の動作するアプリケーション等を参考に
>>429 無知は罪じゃないから安心していいよ
そもそも
>>1にちゃんと説明は書いてあるんだけどね
432 :
デフォルトの名無しさん:2010/02/07(日) 19:04:19
質問をさせてください。
Firefoxでロケーションが変わるたびにサイドバーに
表示しているxulコントロールの要素の値を変更させるものを作りたいと思っているのですが、
その設定の方法は
window.top.document.getElementById("sidebar-box").getElementById("コントロール名").setAttribute(要素名, 設定する値);
で良いのでしょうか?
433 :
432:2010/02/07(日) 19:19:55
すみません、上記の方法で試してみたところうまく動いてくれませんでした。
正しい方法についてご教授願いたく思います。
>432
サイドバーの内容はサブフレーム扱いだからそれでは動かないと思う
そのスクリプトが動いてるのはbrowser.xulの名前空間?
それともサイドバー内の名前空間?
browser.xulの名前空間なんだったらこう。
document.getElementById("browser").contentDocument.getElementById("myControl").setAttribute("attributeName", "value");
すまん間違えた
document.getElementById("sidebar").contentDocument.getElementById("myControl").setAttribute("attributeName", "value");
436 :
432:2010/02/09(火) 23:46:16
>>436 その<overlay>は何をオーバーレイしてるの? browser.xul? 別の物?
438 :
432:2010/02/10(水) 00:51:45
オーバーレイをしているファイル内では以下のように記述しています
<?xml version="1.0"?>
<overlay id="sidetempOverlay" xmlns="
http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="locationchange.js"></script>
<menupopup id="viewSidebarMenu">
<menuitem observes="side_with_page" />
</menupopup>
<broadcasterset>
<broadcaster id="side_with_page" label="SIDEBAR"
autoCheck="false" type="checkbox" group="sidebar"
sidebartitle="SIDEBAR" sidebarurl="chrome://sidebar/content/side_content.xul"
oncommand="toggleSidebar('side_with_page');"/>
</broadcasterset>
</overlay>
[表示]→[サイドバー]に表示するボタンと、
それを押すことで表示されるサイドバーです。
サイドバー内には独自に作ったxulが入るようになっています。
これでbrowser.xulを書き換えていると言うことなのでしょうか。
440 :
439:2010/02/10(水) 20:12:46
あ、ProgressListenersの方のURLはサイドバー関連は書かれてないや。間違って張ってしまった。
441 :
432:2010/02/10(水) 23:33:52
>サイドバーのスクリプトからtabbrowserにProgress Listenerを追加するのが普通だと思うんだが。
一度そうしようとしたことがあるのですが、
<overlay>内でJavaScriptファイルのインポートを記述した場合、
自動でスクリプトが実行されているのか、リスナーに追加されていたのですが、
<window>内でJavaScriptファイルのインポートを記述した場合、
リスナーに追加されていないようでした。
<window>でonload属性でスクリプトを動かせば良いのかと思い試したのですが、
<window>外にインポートの記述をしたところ、エラーを吐かれてしまいました。
以下がエラー文です
「XML パースエラー: ドキュメント要素の後ろに不正な文字列があります。」
サイドバーのスクリプトからリスナーを追加する方法を教えていただきたいです。
長々と質問を続けて大変申し訳ありません。
<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");
を動かしてみたところ、コントロールの要素の値は変更されていませんでした。
いやいやいや、そりゃサイドバーのスクリプトから見たら
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
親切にお答えいただき誠にありがとうございました。
また大量の投稿大変申し訳ありませんでした。
次からは皆様のお役に立てればと思います。
では失礼いたします。
ローカルサーバ立ち上げる
451 :
デフォルトの名無しさん:2010/03/03(水) 16:07:30
復活
BCBのアプリでHTMLレンダリングエンジン組み込みたいんですけど
付属のTWebBrowserはIEで、例えばコンテンツをコントロールキー+ダブルクリック
された時の挙動を変えようとするだけでIDispatchの派生クラス作って
イベントシンクさせてとかなり面倒な形になるんですけど
Geckoで同じことしようとした場合はもっと簡単にできるんでしょうか?
大して変わらない
ほしゅ
ほしゆ
ほす
見てる人いますか?
パネルの座標の取得ってどうすればいいですか?
leftやtopでも取得できないのですが。。。
そういうのはだいたい boxObject の下にあるんじゃね
460 :
458:2010/09/20(月) 19:13:01
>>459 即答ありがとうございます。
document.getElementById("myPanel").leftでは取得できませんでしたが、
document.getElementById("myPanel").boxObject.xで取得できるようになりました。
postしたページでlocation.reload(true)すると
「このページを表示するにはフォームデータを再度送信する必要があります。フォームデータを再送信すると以前実行した検索、投稿や注文などの処理が繰り返されます。」
というメッセージが表示されて処理が中断されますが、
このポップアップを表示しない、もしくは自動で再送信を押す方法はありますか?
拡張機能なら後者の方法は可能かと思ってウィンドウのID探したんですけど、
見つけられませんでした。
>461
DOM Inspector を起動してからそのメッセージを出して
File=>Inspect Chrome Document でそのメッセージのダイアログを選択すると
ポップアップの実体のファイルが分かる。
多分 commonDialog.xul だと思うから、nsIWindowWatcher でオブザーバを登録して
ウィンドウが開かれる度に内容を見て監視するしかないと思う。
それか、gBrowser.loadURIWithFlags とかは引数で PostData を
受け付けるようだから、それを使えば自動送信はできるはず。
ご回答ありがとうございます。
var wwatch = Components.classes["@mozilla.org/embedcomp/window-watcher;1"].getService(Components.interfaces.nsIWindowWatcher);
var observer = {
observe: function(aSubject, aTopic, aData) {
if (aTopic != "domwindowopened") return;
aSubject.addEventListener("load", function() {
aSubject.close();
}, false);
}
};
// 更新箇所
wwatch.registerNotification(observer);
window.location.reload(true);
wwatch.unregisterNotification(observer);
このようにすることでポップアップを消すことはできたのですが、
再送信を押してポップアップを閉じることができません。
また、DOM InspectorでF5や更新ボタンが効かず、
該当のダイアログを出すことができませんでした。
FF4でWebGL搭載だってね
正式版出たらXULRunnerで同人ゲームでも作ろうかしらん
初めてFirefox(3.6.12)の拡張機能を作ってみてるんだが、
ポインタファイルをつくるところでさっそく詰まりましたorz
extensionsフォルダにinstall.rdfで用いたIDをファイル名にもつファイルを作って
ファイルにはソースのフルパスを書いて再起動してもアドオンに追加されません
ポインタファイルをextensionsフォルダから取り除いて再起動すると、
同名のフォルダ(中はからっぽ)が作られます
何が問題なのか、教えてください
466 :
465:2010/12/03(金) 15:17:20
自己解決しました。文字コードをUTF-8(BOMあり)にしてたのが問題でした。
お騒がせしました
でっていう
468 :
467:2010/12/19(日) 01:31:13
誤爆
Mozillaの拡張を書いているんですが、C++/XPCOMで書かなければいけない
部分があります。C++/XPCOMのソースは、autoconfを使用して以下の
プラットフォームでビルドできるようにしています。
- Darwin_x86-gcc3
- Darwin_x86_64-gcc3
- Linux_x86-gcc3
- Linux_x86_64-gcc3
- WINNT_x86-msvc
- WINNT_x86_64-msvc
現状、Windows,Linux,Macの3つの環境でこれらのプラットフォーム用の
Xulrunnerをビルドし、そこからXPCOMを作成し、
リポジトリの拡張フォルダのcomponents/platform以下にそれらを個別に
コミットするところまではできています。
(全プラットフォームのXPCOMを手動で作成後、それらをzipで固めて拡張ができる)
ここから本題ですが、上記のプロジェクトの
デイリービルド環境を構築したいと考えたところで躓いてしまいました。
具体的な構築/運用例をググっても、なかなかでてきません。
1. gccと依存関係をクロスコンパイル+WINEにVCインストール
2. 拡張ビルドサーバ1台+コンパイルファーム2台の3台構成
などの案を考えましたが、どちらでやっても手探りで実際の
運用にこぎ着けるのに2,3週間ぐらいの期間を覚悟しています。
(2.はポータビリティなさそうなのでできればやりたくない)
実際にこれを行っているプロジェクト名を教えて頂けたり、
あるいは「自分はこうやっている」という情報があれば教えてください。
470 :
デフォルトの名無しさん:2011/02/20(日) 11:04:13.06
age
リンクをクリックしたときにURLを加工してジャンプさせるアドオン作りたいんですが、
なんていうイベントで処理すればいいんですかね?
なにそれ怖い
,.ィ'" ` 、
/ ,.--、 :.:.\
r、 |:.:.:.:.〈;;;;;;;ノ :.:.:.:.ヽ
_/△ハ,,__ / ハ !:.:.:.:.:.:.::.:.:.:.:.:.:... :.:.:.:.ヘ
/: : : : : :/ ||:.:i/'ーリ―- 、_:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:. :.:.:.:.:.:.ハ
//: : /: :.:.ト=': : : : :/: : : : : : :. ̄`''ー- 、:.:.:.:.:.:.:.:.:... . .:.:.:.:.:.:!
/ /: : /:.:.:.:.:/: :./: : : /: : : :./: : :/:/: /!: :.i::::``.、:.:.:.:.:.:.:.:.:.:.:.:.:.:!
. /: :./:.:.:.:.:.:! : /: : : / : : : /: : :/:/!:./ |:.:.l|: : :.:.::::\:.:.:.:.:.:.:.:.:.:.|
/Vlハ|/!/!|: : !: : : :! : : :.,'!: :.:/:/ |,' |: :|!: :! : i:.:.::::ヽ.:.:.:.:.:.:.:.:l
,イ /|: :.|: : : :|: : : :.!|: :/:/ |! .|:.リ|: :|:.:.:|: : : : :ハ:.:.:.:.:.:.!
. / / ! ,r|: : : :|: :.'"丁/ ̄` |! !,'十ァ!、:.|: : : :.|: !:`! _,/
|:.! |: : : :| ,rfj ̄ヾ、 ! / |ム」_:リ!: : :.,':.:|:::「
| ト.|: : : :K {| ::::::リ l / ,イ}:::::::ハ,!: :.:/:.:.,'::::|
V:.ハ: : :.| ゛ー '' K.__,/ }:.:.:/:.::/::::リ
V: |: : :ト . xxxx ,. `"''" //}:::/: :.,' ただちに逃げてください...
V:ハ : |:::\ __ "'''''' /イ:::::/: :./
リハハヽ-t`/ \ _,. イ//l/!/|/!
,..、 / /~\ ヽ‐、 / / / リ
/: : :\ _ __,.ィ| イ ,.へ `< ヽr‐ァ―=‐、
くr! : : : : : }フ´ \ ̄ハ:.:.:.:ハ イ ,、〆``ー /:.:/::/ ハ
. |ト、: : : : :/ ヘ::|: !.:.:.:ハ ∨ ̄ / .:/::/ / i!
ただちににげろのガイドライン
http://www.geocities.jp/ust7800870/index.html 。。
ゴミが口を開くな????????????????????????????????????
475 :
デフォルトの名無しさん:2011/07/22(金) 21:59:34.37
Emacsでちまちま書いてるけれど、限界を感じてきた
komodo使ったら効率上がるかな
俺もspidermonkeyでflymakeしながら書いてるけど
js1.7以上対応のjslint的なものの必要性を感じている
jsdocもjs1.7以上だとデフォルトでうまく動いてくれないんだけど
拡張開発者はどうやって対応しているのか知りたい
477 :
sage:2011/08/26(金) 04:03:44.04
hosyu
:new
化沿ってるな
Mozilla開発者ってみんなChrome移行しちゃったの?
スレタイが分かりにくい
「Firefoxの拡張を作るスレ」とかだったらもっと人いたんじゃね
481 :
デフォルトの名無しさん:2011/08/28(日) 12:52:07.56
あげればいいんじゃね?
本格的にChrome移行しちゃった?
Chrome面白いの?将来的に拡張で稼げたりするとか?
483 :
デフォルトの名無しさん:2011/09/17(土) 12:13:26.64
Chromeの拡張は痒いところに手が届かないからなあ
APIはXULよりずっと整理されててとっつきやすいんだが、色々理不尽な制限がついてて嫌になる
Add-on SDKで拡張を作ってたらいつの間にか今までの方法に戻ってた
SDKよりboostrap.jsの方がよっぽど使いやすいぜ・・・
アドオンから外部サイトのHTMLを取得するにはどうしたらいいでしょうか
XMLHttpRequest的な関数があれば教えてくださいm(__)m
ありゃクロスドメインでも普通にXMLHttpRequestでできるんですね
多分解決?しました。。
487 :
デフォルトの名無しさん:2011/09/27(火) 01:33:22.77
アドオン自動更新ログ取って試してみたけど一度アプデするとしばらくは手動で更新確認しても
updateURLにアクセスしないのね
XPCOMを叩くようなコードはサードパーティ製ライブラリとしてまとめておいて
一般開発者はそのライブラリを使うだけだからXPCOM触らなくて済んでウマー
ライブラリ作者はライブラリのメンテナンスのために今まで通り苦労
っていう話ですよ。
ライブラリを簡単に使うためのCPANやGemみたいな仕組みが整備されないと
多分あんまり意味無い。
てかpython入れさせるなら、もういっそのことpythonで拡張書けるようなもの作っちゃいなよって思う
pythonextがあるから現時点でも作れるには作れるけどビルドにも必要なんだからネイティブサポートしちゃえばいいのに
最近のECMAScriptなんてPythonの影響受けまくりだし
493 :
デフォルトの名無しさん:2011/10/07(金) 06:49:58.90
xptの動的登録ってできないのかな
いろいろ探してみたんだけどわからんかった
>493
今の設計ではどう頑張っても無理。
Components.manager.addBootstrappedManifestLocation()と同様の機能が実装される必要がある。
495 :
デフォルトの名無しさん:2011/10/07(金) 11:35:42.41
addons.mozilla.org おちてるっぽい
496 :
デフォルトの名無しさん:2011/10/11(火) 23:11:48.54
本買った 理解できたと 勘違い
本買うよりMDN見たほうがいいよ
いまさら Gecko はねーだろ
JavaScriptは参考になるだろうけど
MDNは化石レベルの情報が平然と残ってるのでちょっと怖い
しょっちゅうリンク切れしてるのかんべんしてくれよ
翻訳してないページなら素直に英語版のリンク貼りゃいいのに、なんで存在しない日本語版のページへリンク貼るんだ
>>494 はっきり否定してくれてありがとう。半年くらい悩んでた。
.xul内で変数か定数って使えますか?
.xulに埋め込んだJavaScriptの中なら定数使えるけど、よくいみわかんね
.xulに埋め込んだJavaScriptの中なら変数や定数使えるけど、よくいみわかんね
再起動不要なアドオンの作り方ってどうすんの?
jetpackで作ればおk
調べてみましたが、これってこれからの主流になるんでしょうか?
拡張を作る用意さやら導入時の再起動無しやらを考えれば主流になると思うよ
ただバージョンが古いFirefoxへ対応が難しいのが難点
3.6とかへ対応したいなら素直にXUL等で記述する従来でのやり方に慣れた方が良さげ
どうだか
制限は多いし資料は少ないしで、どっちかっつーとboostrap.jsの方が・・・
Components.classesだけ書き換えたら完了するようなラッパーはないんですか!
それがboostrap.jsだ
xulが使えないのが致命的
boostrapじゃなくbootstrap.jsじゃないのか
Firefox 8からはchrome.manifestでchrome://...普通に使えるようになるよ
517 :
デフォルトの名無しさん:2011/11/22(火) 04:09:02.04
サイドバーにおいたTEXTBOXのキャレット位置を取得したくおもい、調べて見たところ.getSelection()を使い
最初から選択位置までの文字列を取得し、改行を数えるという所までわかり、文字列を選択出来るようになったのですが。
反転されている選択した文字列を変数に代入の仕方が判らない為改行の数が数えられません。
サイドバーにあるTEXTBOX上の反転文字列を取得するにはどのようすればよろしいでしょうか?
valueをselectionStart/Endでsubstringすればいいんじゃないかな
519 :
デフォルトの名無しさん@か:2011/11/26(土) 19:14:13.77
>>518 518さん
substringというのを知らなかったので試してみたところ、無事取得できました。
ありがとうございました。やっと先にすすめます。
最近XULをはじめたんですが疑問があります。
@下記のように条件をクリアーしたらremoveEventListenerするようにしたつもりなんですが
解除されません。
--------------------------------------
function aaaaa() {
Components.utils.reportError(gBrowser.mTabs.length);
if(gBrowser.mTabs.length>3){window.removeEventListener("TabOpen",this, false);}
}
window.addEventListener("TabOpen",aaaaa, false);
--------------------------------------
Aカスタムボタンでテストをよくおこなうのですが、FirebugにConsole.infoが渡せません。。
errorではなく、infoで渡す方法はないでしょうか?
@ this === window
Firefoxオプションのプロキシ経由で繋いでいるかを判別するにはどうしたらいいですか?
network.proxy.type見ればよかったですね
すみません
Firefoxでmp3再生するのにいい方法ないかね
フラッシュは手間がかかる割に不安定だし
audio.jsはなんかローカルファイルの再生が出来ないし
audioタグがmp3に対応してくれりゃこんなに苦労しなくてすむのに…
閲覧しているページのキャプチャを自動的に取るアドオンを開発していて、
documentのloadイベントのタイミングでキャプチャするようにイベントリスナーを登録しました。
そして試してみたところ、Frameページを表示すると、小フレームの数だけdocumentにloadが
起きるようです。
どうしたら、Frameページでもページ全体がloadされたイベントを一回だけ拾うことができるのでしょうか?
event.targetは?
<browser>タグのオブジェクトに対してaddEventListener("load", loadHtml, true) と登録したのですが、
フレームページを表示すると、フレームページの数だけloadHtmlが呼び出されてしまいます。
呼び出されたすべてのeventのtarget, currentTarget, explicitOriginalTarget, originalTargetを
確認しても子フレームからのイベントだとは判断できず、すべてが<browser>タグのオブジェクトのようです。
529 :
527:2012/03/12(月) 01:09:34.19
>>528 できました。
ありがとうございます。
XULの開発はしっかり英語の部分を読まないとだめですね。気をつけます。
そのページは日本語のページもあるけど
531 :
デフォルトの名無しさん:2012/03/16(金) 12:59:59.51
Firefox11のXMLHttpRequestしゅごいいいいいいいいいいい!!
コードから正規表現がゴリゴリ減っていくのおおおおおおおおおおお!!
533 :
デフォルトの名無しさん:2012/03/22(木) 22:49:58.54
responseXMLをjQueryで操作できないもんかね
jQueryバグだらけ
xhr.responseXML.getElementsByClassNameがまともに動かねえでござる
>>533 移植すりゃいいだけじゃねえの?
$をresponseXMLの参照にするくらいだべ
readyStateが3で止まりまくる
使えねえ
以前、Firebugを有効にしているとreadyStateが4にならないことがあった気がする
趣味の日曜アドオン開発始めたけどHelloWorldさえだせずに一日が過ぎたお(´・ω・`)
おれはダメな男だお(´・ω・`)
ネットでいろいろ調べたら同じようなところでハマってる人が結構いるみたいだお(´・ω・`)
他にもつくらないといけないものあるから
もうちょっとがんばってダメだったらアドオン開発はあきらめるお(´;ω;`)
最初のハードル高すぎんだよな
おまけに情報も3.x以前のものばっかだし
他のアドオンのソースが見放題なんだから、
小さめのアドオン探して適当に改変して遊んでれば何となくいけると思うよ
初心者にそれをやれというのは確かに無理があるけど
chromeの拡張なら最初の一歩は簡単だよん。
userChromeJSのスクリプトやGoogle Chromeの拡張は作るけど
Firefoxの拡張は最初の準備段階で面倒くさそうに思えてあきらめてしまう
そこでboostrap.jsですよ
546 :
デフォルトの名無しさん:2012/07/12(木) 20:46:52.13
最近になってXULの存在を知って、
javascriptで動くマルチプラットフォームなアプリ開発に使おうとおもって
色々調べ始めた。
でも古い情報ばっかりで新しい記事が全然みあたらない。
もしかしてXULってオワコンなの?
というか始まってすらいない
mozIStorageServiceについて質問です、
テーブルの数値型をINTEGERやREALにした場合、
javascriptとからバインディングするときに
bindInt32ParameterかbindDoubleParameterを使えば良いのでしょうか?