首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript - 如何将输入值从弹出窗口传递给Chrome中的父窗口?

JavaScript - 如何将输入值从弹出窗口传递给Chrome中的父窗口?
EN

Stack Overflow用户
提问于 2018-06-14 01:33:53
回答 1查看 0关注 0票数 0

我有一个HTML页面,其中包含一个按钮,显示“打开弹出窗口”。点击此按钮后,会打开一个弹出窗口(使用window.open)。

新的弹出窗口是一个包含简单输入字段和提交按钮的HTML页面。点击提交按钮后,弹出窗口应该关闭,刚才在输入框中输入的文本现在应显示在父窗口中。

我尝试过使用它opener.document.getElementById。它适用于Firefox,但不适用于Chrome。

这是我的父页面(parent.html)的代码:

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<body>

<button type="button" onclick="openPopup()">Open Popup</button>

<p id="result"></p>

<script type="text/javascript">
function openPopup() {
	var popupWindow = window.open('popup.html', '', 'width=300, height=200');
}
</script>

</body>
</html>

这是我的popup(popup.html)的代码:

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<body>

<input type="text" id="userText" placeholder="Please enter some text">

<button type="button" onclick="submitText()">Submit!</button>

<script type="text/javascript">
function submitText() {
	opener.document.getElementById('result').innerHTML = 'The text you\'ve entered is: ' + document.getElementById('userText').value;
	self.close();
}
</script>

</body>
</html>

注意:父级和弹出文件都位于我的桌面上。 如上所述,它可以在Firefox中使用,但不适用于Chrome。当我点击“提交!” 按钮在Chrome中,没有任何反应,并且在控制台中显示以下错误:

代码语言:javascript
复制
未捕获的DOMException:阻止源“null”访问跨源帧的帧。

我花了几个小时尝试在线寻找帮助,但我仍然无法使Chrome从弹出窗口向父页面传递数据(这两者都是,如前所述,这些位于我的桌面,即位于同一目录中)。

EN

回答 1

Stack Overflow用户

发布于 2018-06-14 11:20:37

你遇到的问题是Chrome的安全功能,该功能正在应用名为CORS(跨源请求规范)的Web安全标准。这是为了防止一个网站访问另一个网站(因为这是一种常见的技巧,试图欺骗人们放弃个人信息),除非这两个网页来源于同一个域。例如,默认情况下,http://domainA.com应该无法与http://domainB.com进行通信。在这种情况下,这是一个合理的需求,服务器配置是必需的。

由于你正在桌面上运行测试(没有Web服务器),因此没有域信息存在,Chrome认为你正在创建跨源请求。

如果你从Web服务器运行文件(通过http或https),它将起作用。

有许多免费的Web服务器可供你在本地计算机上设置,并且许多开发工具都包含自己的Web服务器。例如,VS代码Visual Studio都是免费的,并且包含Web服务器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档