使用Edge中的window.open将对象传递给浏览器

时间:2016-01-20 15:24:51

标签: xmldocument window.open microsoft-edge

如果 Edge 浏览器显示浏览器一,则将自定义参数传递给第二个浏览器。 如果我传递一个字符串,它在第二个窗口中可用。但是,如果我在第二个窗口中传递一个对象(比如XMLDocument),我就无法使用serialzetoString。

var myWin = window.open(...);
myWin.customArg = 'string parameter'  // Works
myWin.customArg = xmlObject  // Doesnt Work

在第二个窗口中,

new XMLSerializer().serializeToString(xmlDoc) 

抛出xml解析器异常。

任何人都可以帮忙解决这个问题吗? 相同的代码适用于Chrome。

编辑 - 父窗口的示例代码在这里 -

<html>
<head>
    <script type="text/javascript">
        function OpenWindow()
        {
            var objXML = '<SelectedCharts><Chart ColumnNo="1" ChartName="E0PK" GroupName="test" OrderNo="1" /></SelectedCharts>';
            var xmlDoc = new DOMParser().parseFromString(objXML,'text/xml');
            var dialog = window.open("Child_Window.htm", "title", "width=550px, height= 350px,left=100,top=100,menubar=no,status=no,toolbar=no");
            dialog.dialogArguments = xmlDoc ;
            dialog.opener = window;
        }
    </script>
</head>
<body>
    <span>Passing an XML Object to the child window:</span>
    <input type="button" value="Open Popup" onclick="OpenWindow()" />
</body>
</html>

子窗口的示例代码在这里 -

<html>
<head>
    <script type="text/javascript">
        function onBodyLoad()
        {
            alert(new XMLSerializer().serializeToString(window.dialogArguments));
        }
    </script>
</head>
<body onload="onBodyLoad()">
    <span>This is child window.</span>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

问题中显示的代码段适用于Chrome浏览器。要在Edge浏览器的情况下将上下文传递到另一个窗口,请按照以下方法。

声明一个全局变量并在父窗口中设置它 并且,使用window.opener访问子窗口中的varable。

示例代码在Pass custom arguments to window.open in case of Edge browser

中提供