首页 > 解决方案 > 使用 window.open 的跨域对象上的 SecurityError

问题描述

我有下面的 javascript 代码,当您单击图片(img 标记)时执行,它还使用名为 photoOrder 的数组。

var photoOrder = [1,2,3,4,5];
//Open center figure in separate window
function bigPicture() {
var propertyWidth = 900;
   var propertyHeight = 550;
   var winLeft = ((screen.width - propertyWidth) / 2);
   var winTop = ((screen.height = propertyHeight) / 5);
   var winOptions = "width=900,height=550";
   winOptions += ",left=" + winLeft;
   winOptions += ",top=" + winTop;
   var bigPicWindow = window.open("./biggerPicture.html", "BiggerPicture", winOptions);
   bigPicWindow.focus();
}

在接收窗口上,我有以下代码来访问 photoOrder 数组:

var photoOrderArray = window.opener.photoOrder;

主要思想是查看显示的 IMG 的更大版本。但是当我点击它时,window.open 调用的第二个窗口出现以下错误:

SecurityError:访问跨域对象上的属性“photoOrder”的权限被拒绝

我该如何解决?我尝试了 window.postMessage 但这只会打开一个新的带有错误的蠕虫罐。我通过双击 index.html 文件在本地电脑上运行它。它是我忙于学习的项目,而不是实时网站。

标签: javascriptarrayscross-domain

解决方案


似乎解决它的唯一方法是设置一个 Web 服务器,即使只是像 Xamp 这样的简单设置来避免错误,所以它作为一个以 Xamp 计算机 IP 作为域的实时网站运行。


推荐阅读