2016-01-20 71 views
0

如果是邊緣瀏覽器說Browser One,將自定義參數傳遞給第二個瀏覽器。 如果我傳遞一個字符串,它在第二個窗口中可用。但是,如果我在第二個窗口中傳遞一個對象(比如說XMLDocument),我就無法使用serialzetoString。將對象傳遞給帶有window.open的邊緣的瀏覽器

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

你能分享一個工作*例子嗎? – Sampson

回答

0

在提問中所示的代碼片段工作正常,Chrome瀏覽器。在Edge瀏覽器的情況下,將上下文傳遞到另一個窗口,請按照以下方法進行操作。

聲明一個全局變量並將其設置在父窗口中 然後,使用window.opener訪問子窗口中的可變參數。

並提供示例代碼Pass custom arguments to window.open in case of Edge browser