将值传递给XUL面板内的iframe(Passing values to iframe inside

2019-11-02 02:39发布

我创建了,将显示下面,我将设置自定义的内容工具栏上的按钮Firefox扩展。

我使用的是XUL文件来创建此内容的结构,我当时打开它就像这样:

var config = {  confirm: false ,
                    username:"",
                    password:""};

window.openDialog( "chrome://myext/content/login.xul",
        "",
        "centerscreen=no,all=no,titlebar=no,chrome=yes,
        toolbar=no,dialog=no,resizable=no,modal=yes",
        config);

现在,我服用另一种方法,通过在面板内部的iframe来动态地使用多个XUL文件作为SRC之一。 这里的XUL:

<toolbarpalette id="BrowserToolbarPalette">
    <toolbarbutton id="myextToolbarIcon"
                   image='chrome://myext/content/images/myext-mini-logo.png'
                   type="panel"
                   class="toolbarbutton-1 chromeclass-toolbar-additional"
                   tooltiptext="myext">
        <panel id="myext-panel"
               type="arrow"
               noautofocus="true"
               consumeoutsideclicks="true"
               onpopupshowing="startscreen(event);"
               level="top">
            <hbox id="myext-panel-container" align="top">
                <iframe id="myext-toolbar-menu" flex="1"/>
            </hbox>
        </panel>
    </toolbarbutton>
</toolbarpalette>

是否有发送该“配置”变量XUL文件的类似的方式,因为它与openDialog发生什么呢?

Answer 1:

你真的不能“送”的值,以一个iframe ,但你可以让它在里面运行代码的地方iframe可以找到它-例如,在一个expando属性iframe标签:

var frame = document.getElementById("myext-toolbar-menu");
frame._myExtConfig = config;
frame.src = "chrome://myext/content/login.xul";

该代码运行chrome://myext/content/login.xul可以做那么下面:

var config = window.frameElement._myExtConfig;

供参考: window.frameElement



文章来源: Passing values to iframe inside xul panel