• 解决IE不能在新窗口中向父窗口的下拉框添加项的问题


    >
    首先我们要明确下面的事实:
    1. 利用options.add(new Option("text", "value"));来向下拉列表(SELECT BOX)添加新项(Option)
    2. 在同一个页面利用上述方法添加新项没有任何问题
    现在我们要尝试实现下面的功能:
    前提
    有两个页面A和B,A页面含有一个下拉列表控件
    目标
    当在A页面通过window.open打开B页面时,要求B页面具有向A页面的下拉列表控件中插入新项(option)的能力。

    下面的方式在非IE浏览器上正常运行,IE浏览器中将导致失败:
    JavaScript in B page
    function updateData() { 
        // get document object of its parent window(opener) 
        var doc  = opener.document, 
        list  = doc.getElementById("ddList"); 
        // insert dd list a new option 
        list.options.add(new Option("New Text", list.options.length)); 
        window.close(); 
    }
    因为IE不允许在另一个页面去改变当前页面的下拉列表控件的值。但是我们之前说过,IE是允许在自己页面改变自己的下拉列表的值。所以我们的解决思路就是在父窗口增加一个函数,该函数封装了对下拉列表的添加项操作,然后在新窗口中调用这个函数间接地实现增加项功能,以下是解决方案的源代码中的JavaScript部分:
    JavaScript code in A page
    function popupBPage() { 
        window.open("B.html","", "width=500;height=400"); 
    } 
    function addOption(list, text, value) { 
        list.options.add(new Option(text, value)); 
    }
    JavaScript code in B page
    function updateData() { 
        // get document object of its parent window(opener) 
        var doc  = opener.document, 
            list  = doc.getElementById("ddList"); 
        // insert dd list a new option 
        opener.addOption(list, document.getElementById("textInput").value, list.options.length); 
        window.close(); 
    }
  • 相关阅读:
    MST(prim)+树形dp-hdu-4756-Install Air Conditioning
    Java常用排序算法+程序员必须掌握的8大排序算法
    高可用可伸缩架构实用经验谈
    MYSQL索引失效的各种情形总结
    MySQL使用索引的场景及真正利用索引的SQL类型
    MySQL数据库索引的4大类型以及相关的索引创建
    JVM调优浅谈
    dubbo作为消费者注册过程分析--????
    webservice 协议
    你应该知道的 RPC 原理
  • 原文地址:https://www.cnblogs.com/objectorl/p/1632714.html
Copyright © 2020-2023  润新知