-- 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 から変更する方法があれば、そちらも教えて頂けますと大変助かります。
以上、何卒宜しくお願い申し上げます。
var myWin = window.openDialog("chrome://sample/content/myWindow.xul", "my window", "chrome,width=480,height=640", {label: "hogehoge"});
openでなくopenDialogを使用して、渡したいデータを
{label: "hogehoge"}
のようにJavaScriptオブジェクトのかたちで記載して渡す。
<?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 && 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...
おお! 完璧です。 ありがとうございました!
申し訳ないですが、回答になってません・・・。