在 Edge 中使用 window.open 将对象传递给浏览器
Pass object to browser with window.open in Edge
在 Edge 浏览器的情况下,说浏览器一,将自定义参数传递给第二个浏览器。
如果我传递一个字符串,它在第二个 window 中可用。但是,如果我在第二个 window 中传递一个对象(比如 XMLDocument),我就无法 serialzetoString。
var myWin = window.open(...);
myWin.customArg = 'string parameter' // Works
myWin.customArg = xmlObject // Doesnt Work
第二个window,
new XMLSerializer().serializeToString(xmlDoc)
抛出 xml 解析器异常。
谁能帮忙解决这个问题?
相同的代码适用于 Chrome。
编辑 - Parent Window 的示例代码在这里 -
<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>
Child window 的示例代码在这里 -
<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>
问题中显示的代码片段适用于 Chrome 浏览器。如果是 Edge 浏览器,要将上下文传递给另一个 window,请遵循以下方法。
声明一个全局变量并在父级中设置它window
并且,使用 window.opener.
访问子 window 中的变量
中提供了示例代码
在 Edge 浏览器的情况下,说浏览器一,将自定义参数传递给第二个浏览器。 如果我传递一个字符串,它在第二个 window 中可用。但是,如果我在第二个 window 中传递一个对象(比如 XMLDocument),我就无法 serialzetoString。
var myWin = window.open(...);
myWin.customArg = 'string parameter' // Works
myWin.customArg = xmlObject // Doesnt Work
第二个window,
new XMLSerializer().serializeToString(xmlDoc)
抛出 xml 解析器异常。
谁能帮忙解决这个问题? 相同的代码适用于 Chrome。
编辑 - Parent Window 的示例代码在这里 -
<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>
Child window 的示例代码在这里 -
<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>
问题中显示的代码片段适用于 Chrome 浏览器。如果是 Edge 浏览器,要将上下文传递给另一个 window,请遵循以下方法。
声明一个全局变量并在父级中设置它window 并且,使用 window.opener.
访问子 window 中的变量