トップページ⇒tech
548コメント193KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/11/27(月) 20:00:38
オラ拡張作る。

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

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

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

参考サイト
Mozilla Developer Center
http://developer.mozilla.org/
XULPlanet
http://www.xulplanet.com/

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

>>2-50あたりに関連リンク、近況などがあるかも。
0369デフォルトの名無しさん2009/03/05(木) 15:27:48
>>368
JavaScript本を買って一から勉強し直してください
03705742009/03/05(木) 22:56:18
正解は
window.onload = aaaa;
しかし、この次元で躓いているとXUL関連やFIrefoxの拡張は敷居が高いよ。
まだまだマニュアルや情報源の情報源の十分に整備された世界ではないから…
0371デフォルトの名無しさん2009/03/06(金) 00:30:14
From: [370] 574 <>
みっ、みらいじんだー。

もしかしたら、これを期に勉強して成長した、未来の>>368が、
自らを叱咤激励するために、書き込んだのか〜?
0372デフォルトの名無しさん2009/03/07(土) 19:13:32
nsILocalFileのdirectoryEntriesのgetNext()で取得できる
ファイルエントリの順番って保障されてますか?
0373デフォルトの名無しさん2009/03/07(土) 22:24:07
いいえ。
0374デフォルトの名無しさん2009/03/09(月) 00:49:43
>>373 ありがとうございます
0375デフォルトの名無しさん2009/03/11(水) 09:14:18
Firefox3のProfileManagerに
アドオンから改造を加えることって可能?
0376デフォルトの名無しさん2009/03/15(日) 08:50:18
Windowsの自作アプリケーションから、「現在起動中の」Firefox3にクッキーをセットしたいのですが、
どうしたらできるでしょうか?

IAccessible->IServiceProvider->ISimpleDOMDocument->IDOMHTMLDocumentで余裕とか考えていたのですが、
XPCOMがCOMじゃないということに気が付くのに丸2日かけてしまいましたorz
IEばかり使ってきたのでよくわかかりません…
0377デフォルトの名無しさん2009/03/15(日) 08:53:29
あっ、XULの話題のスレみたいなので他所行った方がいいのかな
0378デフォルトの名無しさん2009/03/15(日) 18:26:38
正攻法だと無理かも。
0379デフォルトの名無しさん2009/03/15(日) 18:43:36
IServiceProviderでnsSupportsは取れるみたいなんですが
nsSupports以外の何物でもありませんでした…ダメか…
0380デフォルトの名無しさん2009/03/16(月) 12:18:34
>>379
nsSupports.QueryInterfaceしてキャストでいけない?
0381デフォルトの名無しさん2009/03/17(火) 15:18:54
ひょっとしてFirefoxのsqliteはメモリ上にデータベース作成できない?
0382デフォルトの名無しさん2009/03/17(火) 21:48:18
mozIStorageService.openSpecialDatabase("memory")
0383デフォルトの名無しさん2009/03/20(金) 16:04:11
>>382
ありがとうございます。

openDatabase(null)
でもいけるみたいですね。
0384デフォルトの名無しさん2009/03/24(火) 04:30:25
nsIFileでファイルのlastModifiedTimeは書き換えできますが
ディレクトリのlastModifiedTimeは書き換え不可なのでしょうか?
必ず例外NS_ERROR_FILE_ACCESS_DENIEDが発生します。

パーミッションは確認しましたし
そのディレクトリを使用中なわけでもありません。

具体的にやりたいのは
新規ディレクトリ、もしくは既存のディレクトリの
lastModifiedTimeを任意の値に変更する
ということです。
0385デフォルトの名無しさん2009/03/24(火) 07:44:36
ttp://mxr.mozilla.org/mozilla-central/source/xpcom/io/nsLocalFileWin.cpp#1894
ttp://mxr.mozilla.org/mozilla-central/source/xpcom/io/nsLocalFileUnix.cpp#994
ttp://mxr.mozilla.org/mozilla-central/source/xpcom/io/nsLocalFileOSX.mm#844
実装を見ればどこに原因があるか分かるかも?
03863842009/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++が書けないので
なんとなくしか理解できず原因を特定するのは難しそうです。

何か試してみた方がよさそうなことはありませんか?
0387デフォルトの名無しさん2009/03/24(火) 22:33:16
>>385
ディレクトリの時刻を変更するには、CreateFile()でFILE_FLAG_BACKUP_SEMANTICSを
指定する必要があるが、それがないから無理だな。
03883842009/03/25(水) 00:44:38
>>387
つまりLinux版やMac版ではFILE_FLAG_BACKUP_SEMANTICSがあるけど
Windows版ではそれがないのでディレクトリ更新時刻は書き換え
できないということですか?

なぜWindows版だけそんな仕様に・・・?
0389デフォルトの名無しさん2009/03/25(水) 01:34:30
>>388
そういうレベルの話ではない。
更新時刻の変更はOSによってやり方が全然違っていて、CreateFile()云々は
Windows固有のやり方。それに加えて、WindowsではUnixとは異なり、
ファイルと同じ方法ではディレクトリの更新時刻は変更できない。
03903842009/03/25(水) 01:45:04
>>389
なるほど。では結論として、

Windows上のXULアプリからはディレクトリの
lastModifiedTimeは変更できない

と考えて問題ありませんか?

妥協策としてnsIProcessでWindowsアプリをrunして変更する
といった方法で対応するしかないという理解でいいでしょうか?
0391デフォルトの名無しさん2009/03/25(水) 10:40:54
興味本位で聞くけどそもそも何故ディレクトリの更新時間を変更したいの?
それって本当に必要なの?
0392デフォルトの名無しさん2009/03/25(水) 12:47:18
>>391
2つのディレクトリ間の同期をとる処理を書いています。
それでディレクトリの更新日時まで同期したいわけですが
0393デフォルトの名無しさん2009/03/25(水) 22:54:41
ディレクトリの更新日時なんてOSどころかファイルシステムによっても
扱いが異なるからあんまり当てにならないよな。
例えばFATだと基本的には 更新日時=作成日時 だが、NTFSはそうではないし。
0394デフォルトの名無しさん2009/03/27(金) 18:28:48
>>380
すべてのnsXXXで試したけど無理でした
Firefoxのソース見るとやはりISimpleXXXしか返していなかったので
IServiceProvider.QueryInterface(nsSupports)が成功するのはWindowsのバグかも?
0395デフォルトの名無しさん2009/03/28(土) 16:58:24
>>394
nsSupports.QueryInterface(nsIXXX)
0396デフォルトの名無しさん2009/03/28(土) 19:23:55
>>395
それが失敗するという話
0397デフォルトの名無しさん2009/04/11(土) 11:03:08
mozIStorageServiceのopenDatabaseでデータベースの接続を開始できますが、
逆にデータベースの接続を終了させるメソッドがありません。
openDatabaseの戻り値への参照が破棄されるタイミングで自動的に接続が終了され、
明示的に終了する必要は無いということでしょうか?
0398デフォルトの名無しさん2009/04/12(日) 23:37:21
mozIStorageConnectionにcloseがあるように見えるけど
0399デフォルトの名無しさん2009/04/15(水) 21:55:29
>>398
すみません、その通りでした。
mozIStorageServiceのほうしか見ずに言ってしまいました。
0400デフォルトの名無しさん2009/04/15(水) 23:09:12
JavaScriptのXPCOMで引数があってもなくても良いようなメソッドを定義することはできますか?
IDLでvoid test([optional] in string arg);と定義しても、引数無しでメソッドを呼び出すと、
NS_ERROR_XPC_NOT_ENOUGH_ARGSで怒られます。
0401デフォルトの名無しさん2009/04/19(日) 02:12:33
モーダルダイアログを開いている親のウィンドウを、ダイアログも含めて閉じることはできますか?
0402デフォルトの名無しさん2009/04/21(火) 02:06:59
できるかできないかで言えばもちろんできますよ
0403デフォルトの名無しさん2009/05/08(金) 22:00:50
401 じゃないけどダイアログウィンドウってどうやってアクセスしたらいいの?
getElementsByLocalName 的な関数があればいいんだけど
0404デフォルトの名無しさん2009/05/10(日) 03:01:22
ダイアログウィンドウのDOMWindowならnsIWindowMediatorで取れるよ
0405デフォルトの名無しさん2009/05/11(月) 23:38:53
>404
ありがとう調べて見る
0406デフォルトの名無しさん2009/06/11(木) 10:20:45
XPCOMのC++で書いたサンプルないですか?
このあたり見てますがうまくいかない・・・

http://firefox.geckodev.org/index.php?XPCOM%E3%81%AE%E4%BD%9C%E6%88%90
http://takedarts.jp/index.php?XPCOM%A4%CE%B3%AB%C8%AF
0407デフォルトの名無しさん2009/06/11(木) 12:45:24
XPCOM使ってるAddonを片っ端からダウンロードして、
ソース入りのやつを拾い出せばいいんじゃない?
0408デフォルトの名無しさん2009/06/15(月) 01:12:30
>>406
どこで詰まってるのか書かないと適切なアドバイスはできないよ
0409デフォルトの名無しさん2009/06/18(木) 15:30:08
履歴から特定のドメインにマッチしたものだけを削除する方法を教えてください
0410デフォルトの名無しさん2009/06/18(木) 16:06:56
>>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

ご存知の方いましたら、教えてください。
よろしくお願いします。
0411デフォルトの名無しさん2009/06/18(木) 16:21:08
そのレスは「それ”以外”を削除」「指定したサイト”のみ”履歴を残す」
と言ってるので「マッチしたもの”だけ”を削除」と言ってる>>409とは意味が真逆
なので文盲は>>410
0412デフォルトの名無しさん2009/06/18(木) 16:28:00
質問もいい加減だよな, 対象としているクライアントがなにかサッパリだし
0413デフォルトの名無しさん2009/06/18(木) 17:45:10
>>410
お前ウザいけど文盲なのか?白痴なのか?
0414デフォルトの名無しさん2009/08/13(木) 15:39:28
test
0415デフォルトの名無しさん2009/08/13(木) 15:46:40
前スレにも出てましたが、URLからHTMLDocumentオブジェクトって生成できないんでしょうか?
前スレで解決してた方は@mozilla.org/webshell;1を使って生成していたようですが、
xpcshellでwebshell.loadURIを叩くと落ちてしまいます。
xpcshell上でオブジェクトを生成したいのですが何か案はないでしょうか?
0416デフォルトの名無しさん2009/08/13(木) 20:46:13
これか?
http://mxr.mozilla.org/firefox/source/browser/components/microsummaries/src/nsMicrosummaryService.js#2098
0417デフォルトの名無しさん2009/08/14(金) 05:33:25
firefoxアドオンを作成しています。HelloWorldしか作ったことがありません。
onload,onmouseover等のイベントをアドオンから強制的に発行できる方法があったら教えていただけると嬉しいです。
0418デフォルトの名無しさん2009/08/14(金) 06:02:18
>>416
iframeにソース突っ込むタイプですね。
既存のwindowオブジェクトを探して、そこから
iframeを新たに作成するようですが、そもそもxpcshell上には、
windowオブジェクトが存在しません。(xpcomから探しても無い。。。)
やはり、xpcshell上からの作成は無理なのでしょうか。。。
0419デフォルトの名無しさん2009/08/14(金) 07:28:12
>>418
あー、そういうのがあるのか
XUL より下はワカンネ
0420デフォルトの名無しさん2009/08/14(金) 08:49:57
>>419
ありがとうございました。
他にもirc.mozilla.orgで聞いてみましたが無理じゃね?って言われましたorz
04214172009/08/14(金) 20:04:01
自己解決しました。
ソースコードからイベントに呼ばれる関数を拾ってきました。
失礼しました。
0422デフォルトの名無しさん2009/08/22(土) 16:44:49
今、WindowsでXULアプリをxulrunnerで作るとしたら、お勧めIDEって何がありますか?
0423DownloadWithCravingExplorer.uc.xul2009/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>
0424DownloadWithCravingExplorer.uc.xul2009/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へその動画をダウンロードする」タスクを追加する
コマンドを追加します。
0425DownloadWithCravingExplorer.uc.xul2009/08/28(金) 14:53:33
>>424
×:in not defined
○:is not defined
0426DownloadWithCravingExplorer.uc.xul2009/09/02(水) 23:04:17
>>423-425

自己レス。
コマンドラインで引数を受け取ってローカルアプリのAPIをコールするexeを自作して、
それをxul内のスクリプトからprocess.runで呼び出す方法でとりあえず解決しました。
0427デフォルトの名無しさん2009/09/09(水) 15:40:50
質問です。Thunderbird用にアドオンを作り、そこからFirefoxで
表示しているページのdocumentオブジェクトにアクセスすることは
できますか?

たとえばTunderbird上に届いたあるメールのヘッダの特定の文字列を
Firefoxに表示しているページのフォーム上のあるinputに入れるとか。
0428デフォルトの名無しさん2009/11/11(水) 23:24:56
ffやthunderbirdとは関係ないStandaloneなアプリをXULで開発しようとする場合に
一番参考になる書籍ってなんでしょう?
0429デフォルトの名無しさん2009/11/11(水) 23:38:20
>>428
>ffやthunderbirdとは関係ない

釣り?文盲?白痴?
0430デフォルトの名無しさん2009/11/12(木) 01:14:05
fxなんて数あるGecko搭載アプリの一つでしかねーぞ。
0431デフォルトの名無しさん2009/11/13(金) 04:14:24
>>428
和書だとFirefox関連しかないみたいだし、
洋書でもEssential XUL Programmingくらいしか見つからなかった
現状では一番参考とかいうレベルではなく、それくらいしか選択肢無いみたい
それよりはXULRunnerで動いてるソフトのソースを見た方が参考になると思う
http://ja.wikipedia.org/wiki/XULRunner の動作するアプリケーション等を参考に

>>429
無知は罪じゃないから安心していいよ
そもそも>>1にちゃんと説明は書いてあるんだけどね
0432デフォルトの名無しさん2010/02/07(日) 19:04:19
質問をさせてください。
Firefoxでロケーションが変わるたびにサイドバーに
表示しているxulコントロールの要素の値を変更させるものを作りたいと思っているのですが、
その設定の方法は

window.top.document.getElementById("sidebar-box").getElementById("コントロール名").setAttribute(要素名, 設定する値);

で良いのでしょうか?
04334322010/02/07(日) 19:19:55
すみません、上記の方法で試してみたところうまく動いてくれませんでした。
正しい方法についてご教授願いたく思います。
0434デフォルトの名無しさん2010/02/08(月) 11:45:27
>432
サイドバーの内容はサブフレーム扱いだからそれでは動かないと思う
そのスクリプトが動いてるのはbrowser.xulの名前空間?
それともサイドバー内の名前空間?
browser.xulの名前空間なんだったらこう。

document.getElementById("browser").contentDocument.getElementById("myControl").setAttribute("attributeName", "value");

0435デフォルトの名無しさん2010/02/08(月) 11:54:49
すまん間違えた
document.getElementById("sidebar").contentDocument.getElementById("myControl").setAttribute("attributeName", "value");
04364322010/02/09(火) 23:46:16
>435
ありがとうございます。
しかし試してみましたが期待した動作をしてくれませんでした。
名前空間についてですが、まだそこまでの理解をしておらず、調べながらになりますが、
<overlay id="sidetempOverlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"></overlay>
内にスクリプトがあります。名前空間はこのxmlns要素内の事でよろしかったでしょうか?
連続の質問で大変申し訳ありません。
0437デフォルトの名無しさん2010/02/10(水) 00:07:59
>>436
その<overlay>は何をオーバーレイしてるの? browser.xul? 別の物?
04384322010/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を書き換えていると言うことなのでしょうか。
0439デフォルトの名無しさん2010/02/10(水) 20:00:36
それなら>435でサイドバー内にアクセス出来ると思うんだけどな。
↓にもそう書いてあるし。
ttps://developer.mozilla.org/en/Code_snippets/Sidebar#Accessing_the_sidebar_from_a_browser.xul_script
「期待した動作をしない」ってのがどういう状況なのか分からないのでなんとも。

そもそも、ロケーションの変更でサイドバーの内容を書き換えるなら、
サイドバーのスクリプトからtabbrowserにProgress Listenerを追加するのが普通だと思うんだが。
ttps://developer.mozilla.org/ja/Code_snippets/Progress_Listeners
04404392010/02/10(水) 20:12:46
あ、ProgressListenersの方のURLはサイドバー関連は書かれてないや。間違って張ってしまった。
04414322010/02/10(水) 23:33:52
>サイドバーのスクリプトからtabbrowserにProgress Listenerを追加するのが普通だと思うんだが。

一度そうしようとしたことがあるのですが、
<overlay>内でJavaScriptファイルのインポートを記述した場合、
自動でスクリプトが実行されているのか、リスナーに追加されていたのですが、
<window>内でJavaScriptファイルのインポートを記述した場合、
リスナーに追加されていないようでした。

<window>でonload属性でスクリプトを動かせば良いのかと思い試したのですが、
<window>外にインポートの記述をしたところ、エラーを吐かれてしまいました。
以下がエラー文です
「XML パースエラー: ドキュメント要素の後ろに不正な文字列があります。」

サイドバーのスクリプトからリスナーを追加する方法を教えていただきたいです。
長々と質問を続けて大変申し訳ありません。
0442デフォルトの名無しさん2010/02/11(木) 00:06:38
<window onload="init();" onunload="uninit();">
<script type="application/x-javascript" src="progress.js"/>
</window>
で、progress.jsに
function init() { top.gBrowser.addProgressListener(〜
って書けばいいと思うんだが。
04434322010/02/11(木) 00:37:03
>>442
試してみました、しかしどうも動いてくれません。

ちなみにサイドバーのスクリプト内で
document.getElementById("sidebar").contentDocument.getElementById("myControl").setAttribute("attributeName", "value");
を動かしてみたところ、コントロールの要素の値は変更されていませんでした。
0444デフォルトの名無しさん2010/02/11(木) 01:07:47
いやいやいや、そりゃサイドバーのスクリプトから見たら
document.getElementById("sidebar").contentDocument
が存在するわけないでしょ。もうすこし冷静になって考えようよ。
あと、「動かない」だけじゃなくて、どこまで出来てて、どこから出来ないのか、
どこで詰まっててどういうエラーが出るのか、ちゃんと自分で把握して説明しないと、
エスパーでもないかぎりアドバイスしようがないよ。
04454322010/02/11(木) 03:10:22
申し訳ありません、確かにその通りでした。

ところで急展開申し訳ないのですが、
現在期待した動き(ロケーションが変わったときにサイドバーのコントロールの要素が変更される)
が動きました。
どうやらaddEventListenerをしていなかったのが原因だったようです。
04464322010/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;
},
04474322010/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>
04484322010/02/11(木) 03:20:43
親切にお答えいただき誠にありがとうございました。
また大量の投稿大変申し訳ありませんでした。
次からは皆様のお役に立てればと思います。
では失礼いたします。
0449デフォルトの名無しさん2010/03/01(月) 00:26:48
chaikaみたいに、
http://127.0.0.1:8823/thread/
とかのURL入力で値受け取るには何使えばいいのでしょうか?
0450デフォルトの名無しさん2010/03/01(月) 00:56:06
ローカルサーバ立ち上げる
0451デフォルトの名無しさん2010/03/03(水) 16:07:30
復活
0452デフォルトの名無しさん2010/03/06(土) 18:16:43
BCBのアプリでHTMLレンダリングエンジン組み込みたいんですけど
付属のTWebBrowserはIEで、例えばコンテンツをコントロールキー+ダブルクリック
された時の挙動を変えようとするだけでIDispatchの派生クラス作って
イベントシンクさせてとかなり面倒な形になるんですけど
Geckoで同じことしようとした場合はもっと簡単にできるんでしょうか?
0453デフォルトの名無しさん2010/03/06(土) 19:06:20
大して変わらない
0454デフォルトの名無しさん2010/06/04(金) 07:47:43
ほしゅ
0455デフォルトの名無しさん2010/07/04(日) 23:34:25
ほしゆ
0456デフォルトの名無しさん2010/08/15(日) 23:34:03
ほす
0457デフォルトの名無しさん2010/09/20(月) 13:48:37
見てる人いますか?
0458デフォルトの名無しさん2010/09/20(月) 13:50:13
パネルの座標の取得ってどうすればいいですか?
leftやtopでも取得できないのですが。。。
0459デフォルトの名無しさん2010/09/20(月) 15:51:14
そういうのはだいたい boxObject の下にあるんじゃね
04604582010/09/20(月) 19:13:01
>>459
即答ありがとうございます。
document.getElementById("myPanel").leftでは取得できませんでしたが、
document.getElementById("myPanel").boxObject.xで取得できるようになりました。
0461デフォルトの名無しさん2010/09/23(木) 13:32:44
postしたページでlocation.reload(true)すると
「このページを表示するにはフォームデータを再度送信する必要があります。フォームデータを再送信すると以前実行した検索、投稿や注文などの処理が繰り返されます。」
というメッセージが表示されて処理が中断されますが、
このポップアップを表示しない、もしくは自動で再送信を押す方法はありますか?
拡張機能なら後者の方法は可能かと思ってウィンドウのID探したんですけど、
見つけられませんでした。
0462デフォルトの名無しさん2010/09/23(木) 20:24:22
>461
DOM Inspector を起動してからそのメッセージを出して
File=>Inspect Chrome Document でそのメッセージのダイアログを選択すると
ポップアップの実体のファイルが分かる。
多分 commonDialog.xul だと思うから、nsIWindowWatcher でオブザーバを登録して
ウィンドウが開かれる度に内容を見て監視するしかないと思う。

それか、gBrowser.loadURIWithFlags とかは引数で PostData を
受け付けるようだから、それを使えば自動送信はできるはず。
0463デフォルトの名無しさん2010/09/24(金) 08:29:43
ご回答ありがとうございます。

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や更新ボタンが効かず、
該当のダイアログを出すことができませんでした。
0464デフォルトの名無しさん2010/11/12(金) 15:09:32
FF4でWebGL搭載だってね
正式版出たらXULRunnerで同人ゲームでも作ろうかしらん
0465デフォルトの名無しさん2010/12/03(金) 14:52:11
初めてFirefox(3.6.12)の拡張機能を作ってみてるんだが、
ポインタファイルをつくるところでさっそく詰まりましたorz

extensionsフォルダにinstall.rdfで用いたIDをファイル名にもつファイルを作って
ファイルにはソースのフルパスを書いて再起動してもアドオンに追加されません
ポインタファイルをextensionsフォルダから取り除いて再起動すると、
同名のフォルダ(中はからっぽ)が作られます

何が問題なのか、教えてください
04664652010/12/03(金) 15:17:20
自己解決しました。文字コードをUTF-8(BOMあり)にしてたのが問題でした。
お騒がせしました
0467デフォルトの名無しさん2010/12/19(日) 01:30:31
でっていう
04684672010/12/19(日) 01:31:13
誤爆
■ このスレッドは過去ログ倉庫に格納されています