JavaScript问题在iframe中启动站点时



我已经设置了一个清晰的故事情节课程(使用页面" story.html"访问的闪存版本和使用" story_html5.html"访问的html5版本访问)。但是,当我直接运行时,它可以正常运行时,当我尝试在公司服务器上运行所有内容(链接到我的个人服务器上的课程文件)时,我会得到JavaScript错误:

该课程使用player.GetVar("HTML5spelaren")访问位于Story_html5.html页面本身上的称为HTML5spelaren的变量。在iframe中运行时,我会获得"拒绝访问属性'html5spelaren'的许可"。

最后,该课程使用JavaScript var newWin=document.window.open("report.html", "Kursintyg");在新窗口中显示课程完成证书。但是,在iframe中运行时,这会导致"拒绝访问属性'Open'的权限'。

有没有办法重写JavaScript来解决这个问题?我需要能够检测该课程是在Flash还是HTML5模式下运行的(这是我在Story_html5.html中使用的变量),并且能够使用JavaScript在单击时从IFRAME中打开新页面在链接上。

页面结构:https://dl.dropboxusercontent.com/u/11131031/pagestructure.png

/andreas

有一种方法可以通过JavaScript互相交谈。您可以使用tostmessage:https://developer.mozilla.org/en-us/docs/web/api/window/postmessage

在您的情况下,在story.html或story_html5.html中可以使用:

parent.postMessage(HTML5spelaren, parent_domain); 

您在公司页面中添加了一个事件侦听器:

window.addEventListener("message", receiveMessage, false);

和收到功能中,您可以检索所需的数据。类似:

function receiveMessage(event){
    your_variable = event.data
}

可以将相同的逻辑应用于您的弹出窗口。

您可以从孩子到父母或从父母到孩子。

我的猜测是您在iframe中链接到的内容在其他服务器/域上。如果是这样,错误是停止跨站点脚本(XSS)攻击的安全功能。

考虑将父母iframe和表达内容(儿童)放在同一服务器上。这应该消除问题。

最新更新