jemand anders
Erfahrenes Mitglied
Hallo,
wenn ich die postMessage()-Testapplikation starte, wird die zweite Seite zwar aufgebaut, aber
Freundl. Grüße
wenn ich die postMessage()-Testapplikation starte, wird die zweite Seite zwar aufgebaut, aber
- die Rückmeldung erfolgt erst beim zweiten Aufruf, und
- das Input-Feld wird beim ersten Aufruf gar nicht und ansonsten nur temporär gefüllt und direkt wieder geleert.
Freundl. Grüße
HTML:
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width" />
<title>messageChannelPage1a.html</title>
</head>
<!-- https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage -->
<body>
<p>messageChannelPage1a.html</p>
<script>
var popup = window.open(
'messageChannelPage2a.html',
'popup',
'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=600,height=1100,top=0, left=1250'
)
popup.focus()
popup.postMessage(
JSON.stringify({
message: 'myMessageText...',
location: window.location.href
}),
window.location.href //"http://localhost/messageChannelPage1a.html");
)
window.addEventListener(
'message',
event => {
//if (event.origin !== "./messageChannelPage1a.html") return;
console.log(event.source, event.data)
},
false
)
</script>
</body>
</html>
HTML:
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width" />
<title>messageChannelPage2a.html</title>
</head>
<body>
<p>messageChannelPage2a.html</p>
<input type="text" name="input1" id="input1" />
<script>
console.clear()
window.addEventListener('message', event => {
// if (event.origin !== "./messageChannelPage1a.html") return;
const data = JSON.parse(event.data)
document.querySelector('input').value =
data.message + ' ' + data.location
event.source.postMessage(
'Message von Page 2' +
event.source.window.location.href +
' ' +
data.message +
' ' +
data.location,
event.origin
)
})
</script>
</body>
</html>
Zuletzt bearbeitet: