【问题标题】:How to open popup and populate it with data from parent window?如何打开弹出窗口并使用父窗口中的数据填充它?
【发布时间】:2009-11-16 08:14:30
【问题描述】:

如何使用 JavaScript/jQuery 在弹出窗口中填充来自父页面中 JS 变量的数据?

在我的示例中,我有一个文件名数组。我在父窗口中最多列出五个,如果还有更多,我想提供一个链接,打开一个弹出窗口并列出数组中的每个帖子。

如果我打开一个包含<ul id="all_files"></ul> 的弹出窗口,我如何将<li>-items 添加到该列表中?

【问题讨论】:

  • 父窗口中是否已有文件名?如果不是,你如何获得前 5 个名字?
  • 是的,它们是用 Ajax 收集的,并存储在父窗口中的数组中。

标签: javascript jquery


【解决方案1】:

父窗口:

<span id="popup"> Click to Open Popup </span>

<script type="text/javascript">
var ar=new Array("Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", 
                 "Item 7", "Item 8", "Item 9", "Item 10");
function getArray(){
    return ar;
}
$(document).ready(function(){
    $("span#popup").click(function(){
        var p=window.open("Popup.html");
    });
});
</script>

弹出窗口:

<ul id="list"></ul>
<script type="text/javascript">
    if(window.opener && !window.opener.closed){
        var ar= window.opener.getArray();
        var items="";
        for(var i=0;i<ar.length;i++){
            items +="<li>" + ar[i] + "</li>";
        }
        $("ul#list").html(items);
    }
</script>

【讨论】:

  • 它在 ar ar= window.opener.getArray() 处停止执行; Firefox 控制台输出:“错误:window.opener.getArray 不是函数”。即使它存在并且没有拼写错误。
  • 顺便说一下,我已经在 Firefox 3.5.x 中使用 firebug 对其进行了测试!
  • 对不起,这是我的错...实际上这个函数是从一个 iframe 调用的,我相信那个框架会作为父框架...但那是错误的。因此,要访问 Iframe 的 JS 函数,可以这样做:window.opener.window.frames.THIS_FRAME.getFiles();其中 iframe 的名称和 ID 为“THIS_FRAME”。
猜你喜欢
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多