javascript - 如何从本地主机的iframe将数据设置为离线html文件的父窗口变量?

标签 javascript html iframe

在我的 html 页面(file:///C:/Users/NEC/Desktop/test.html)中,有 javascript 变量(或输入文本字段)和调用其他主机的 iframe (本地主机:8081/TProject/sample.html)。

在 test.html 中

<iframe src="localhost:8081/TProject/sample.html" ></iframe><br/>
<input type="text" id="output" ><br />

并且,在我的iframe中显示的sample.html中,有以下javascript代码来更改父窗口输入文本的值。

function setData() {
  window.parent.getElementById("output").value = "hello"; 
}

错误消息是:

Uncaught SecurityError: Blocked a frame with origin "localhost:8081" from 
accessing a frame with origin "null".  The frame requesting access has a protocol of 
"http", the frame being accessed has a protocol of "file". Protocols must match.

如何将值(javascript 变量)从在线服务器传递到离线 html 页面?

最佳答案

谢谢您的回答。 现在我可以使用“window.parent.postMessage()”解决我的问题。

从 iframe 的本地主机服务器页面使用以下内容发送消息

window.parent.postMessage({ message: 'successfully connected'}, "*");

并从离线页面捕获该消息

window.addEventListener('message', function(event) {
  document.getElementById("output").value = event.data.message;
}, false);

关于javascript - 如何从本地主机的iframe将数据设置为离线html文件的父窗口变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21745793/

相关文章:

javascript - 单击两次时 .focus() 不聚焦

php - 如何在没有局部变量的情况下重新设计这段 PHP 代码?

php - 使用 PHP 创建规范

html - CSS滤镜亮度: can it be applied separately to border and body of one element?

html - 我们如何调整垂直线的大小以匹配框架大小

javascript - 两个 iframe 子级之间使用 postMessage 进行通信

javascript - 单击按钮时重新加载 iframe 内容(本地 HTML)

javascript - 视差滚动文本在第一次滚动时跳到顶部

javascript - 使用数组中的图像填充多个 div,且不重复

javascript - 显示数组,其间有附加输入