人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

XUL を用いて Firefox Extension を勉強しているのですが、どのようにすればオープンした window に外部から値を渡すことがでるのでしょうか?

-- window をオープンする myWindow.js ファイル --
function openNewWindow()
{
var myWin = window.open("chrome://sample/content/myWindow.xul","my window","chrome,width=480,height=640");
}
----

-- myWindow.xul --
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window
id="findfile-window"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

<button id="myButton" label="my button" />

<script>
function setButtonLabel(str){
document.getElementById('myButton').setAttribute('label', str);
}

function showAlert(msg){
alert(msg);
}
</script>
</window>
----
myWindow.js で var myWin = window.open(...) の直後に
myWin.setButtonLabel("New Label");
myWin.showAlert("ALERT !");
等を行い myWindow.xul の window タグ内に定義されている関数に値を渡しても何も起こりませんでした。
尚、新しいwindowは myWindow.js により正常にオープンされています。
myWindow.xul 内の button コンポーネント (id = myButton ) の label の値を直接 myWindow.js から変更する方法があれば、そちらも教えて頂けますと大変助かります。
以上、何卒宜しくお願い申し上げます。


●質問者: pooh2005
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:chrome firefox js open STR
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● sukiyaki22
●1ポイント

http://dev.ariel-networks.com/articles/workshop/firefox-extensio...

◎質問者からの返答

申し訳ないですが、回答になってません・・・。


2 ● northapple
●69ポイント

myWindow.js

var myWin = window.openDialog("chrome://sample/content/myWindow.xul", "my window", "chrome,width=480,height=640", {label: "hogehoge"});

openでなくopenDialogを使用して、渡したいデータを

{label: "hogehoge"}

のようにJavaScriptオブジェクトのかたちで記載して渡す。

myWindow.xul

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window onload="init();" 
id="findfile-window"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script><![CDATA[
function init() {
 var button = document.getElementById("myButton");
 var buttonLabel;
 if("arguments" in window &amp;&amp; window.arguments.length > 0) {
 buttonLabel = window.arguments[0].label;
 button.setAttribute('label', buttonLabel);
 }
}
]]></script>
<button id="myButton" label="my button" />
</window>

myWindow.xulでは、onloadされたときに実行される関数init()で、myWindow.jsで渡されたデータにwindow.argumentsプロパティでアクセスして<button>のラベルに設定する。

以上のようにするとスクリプト側からボタンのラベルを設定できると思います。はずしてたらごめんなさい。

参考サイト

http://developer.mozilla.org/ja/docs/Working_with_windows_in_chr...

◎質問者からの返答

おお! 完璧です。 ありがとうございました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ