Я следую this example, чтобы передать объект в окно, но когда он в качестве аргумента имеет значение «undefined».Передача произвольного объекта JavaScript в Xul
Это мое первое окно (. Набло свалки является способом печати на консоль, когда debug options включены):
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<!DOCTYPE window SYSTEM "chrome://XulWindowArgTest/locale/XulWindowArgTest.dtd">
<window id="windowID" width="400" height="300"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script>
<![CDATA[
function onClickMe(event) {
dump("begin\n");
try {
var args = {
param1: true,
param2: 42
};
args.wrappedJSObject = args;
var watcher = Components.classes["@mozilla.org/embedcomp/window-watcher;1"].getService(Components.interfaces.nsIWindowWatcher);
watcher.openWindow(null, "chrome://XulWindowArgTest/content/about.xul", "windowName", "chrome", args);
} catch (e) {
dump("error: " + e + "\n");
}
dump("end\n");
}
]]>
</script>
<button label="Click me !" oncommand="onClickMe();" />
</window>
и мое второе окно:
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<!DOCTYPE window SYSTEM "chrome://XulWindowArgTest/locale/XulWindowArgTest.dtd">
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="onload()">
<script>
<![CDATA[
function onload() {
dump('arg = ' + window.arguments[0].wrappedJSObject + "\n");
}
]]>
</script>
<label value="test" />
</window>
когда вторых окнах, он вызывает нагрузка и отпечатки:
arg = undefined
Любая идея, как исправить это?
О подходе openDialog, я попытался с первым примером на странице: 'openDialog (null," chrome: //XulWindowArgTest/content/about.xul "," windowName "," chrome ", {status: «Чтение удаленных данных», maxProgress: 50, прогресс: 10}); 'и читать с помощью' dump ('arg =' + window.arguments [0] .maxProgress + "\ n"); 'но он либо печатает' undefined ' –
Также спасибо за исправления. К сожалению, он по-прежнему печатает 'undefined'. Я обновил вопрос с вашими назначениями. –
@Tom Brito, openDialog имеет разные параметры, чем .open, поэтому вам нужно будет удалить этот нулевой параметр, я полагаю, для этого вызова функции на самом деле. С учетом сказанного, у меня есть версия кода из вашего вопроса, который работает здесь. Я не понимаю, почему ваша версия возвращается неопределенно. На самом деле, вы отправляете весь свой объект на debug() - я не уверен, как он справляется с этим; Я использую jsdump, и он просто говорит мне, что это объект. печать window.argument [0] .wrappedJSObject.param2 может быть лучшим выбором для вас. – pc1oad1etter