rav*_*aja 5 javascript firefox google-chrome microsoft-edge
我目前正在使用Edge 44.18362,我有一个身份验证窗口和一个打开它的父窗口,身份验证完成后,我将消息发布到父窗口(打开窗口),如下所示:
$window.opener.postMessage(data,URL);
Run Code Online (Sandbox Code Playgroud)
我正在像这样在父窗口中监听事件:
window.addEventListener('message', someFunc, false);
Run Code Online (Sandbox Code Playgroud)
并someFunc()定义如下:
function someFunc(windowData){
//here I am accessing source as windowData.source
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试访问访问 URL 和内容的source属性MessageEvent。在 Chrome/Firefox 中,我能够访问source对象并且功能工作正常,但是当涉及到 Edge 时,我无法访问source对象并且我在控制台中看到了这个错误。
!0:
这里出了什么问题,可以做些什么来解决这个问题?
我用以下代码示例进行了测试,它可以在 Edge 中正常运行:
第1页.html:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script>
function openChild() {
var childwin = window.open('Page2.html', 'popup', 'height=300px, width=500px');
}
window.addEventListener("message", (event) => {
let txt = document.querySelector('#txtMsg');
txt.value = `Name is ${event.data.pName} Age is ${event.data.pAge}`;
console.log(event.source); //update: get event.source
});
</script>
</head>
<body>
<form>
<fieldset>
<input type='button' id='btnopen' value='Open child' onclick='openChild();' />
<input type='text' id='txtMsg' />
</fieldset>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
第2页.html:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script>
function sendMessage() {
let msg = { pName: "Bob", pAge: "35" };
window.opener.postMessage(msg, 'http://domain_name/Page1.html')
window.opener.focus();
}
</script>
</head>
<body>
<form>
<fieldset>
<input type='button' id='btnSendMsg' value='Send Message' onclick='sendMessage();' />
</fieldset>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
结果:
您可以参考示例,如果仍然无法正常工作,请提供可以重现问题的最小示例。仅使用您提供的上述代码,我无法重现该问题。
| 归档时间: |
|
| 查看次数: |
484 次 |
| 最近记录: |