在iframe中启动站点时出现JavaScript问题

在iframe中启动站点时出现JavaScript问题,javascript,html,flash,iframe,Javascript,Html,Flash,Iframe,我已经建立了一个清晰的故事线课程(使用“story.html”页面访问的Flash版本和使用“story\u HTML5.html”访问的HTML5版本)。直接运行时效果很好,但是,当我尝试在公司服务器上的iframe中运行所有内容(链接到我个人服务器上的课程文件)时,会出现JavaScript错误: 本课程使用player.GetVar(“HTML5spelaren”)访问名为HTML5spelaren的变量,该变量位于story\u html5.html页面本身。当在iframe中运行时,我

我已经建立了一个清晰的故事线课程(使用“story.html”页面访问的Flash版本和使用“story\u HTML5.html”访问的HTML5版本)。直接运行时效果很好,但是,当我尝试在公司服务器上的iframe中运行所有内容(链接到我个人服务器上的课程文件)时,会出现JavaScript错误:

本课程使用
player.GetVar(“HTML5spelaren”)
访问名为
HTML5spelaren
的变量,该变量位于story\u html5.html页面本身。当在iframe中运行时,我得到“访问属性'HTML5spelaren'的权限被拒绝”

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

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

页面结构:


/Andreas

我猜您在iFrame中链接的内容位于不同的服务器/域上。如果是,则该错误是用于停止跨站点脚本(XSS)攻击的安全功能


考虑将父iFrame和铰接内容(子)放在同一台服务器上。这应该可以消除这个问题。

不同的域可以通过javascript相互交流。您可以使用postMessage:

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

parent.postMessage(HTML5spelaren, parent_domain); 
function receiveMessage(event){
    your_variable = event.data
}
并在公司页面中添加事件侦听器:

window.addEventListener("message", receiveMessage, false);
在receiveMessage函数中,您可以检索所需的数据。比如:

parent.postMessage(HTML5spelaren, parent_domain); 
function receiveMessage(event){
    your_variable = event.data
}
同样的逻辑可能也适用于弹出窗口

您可以从子级发布到父级,也可以从父级发布到子级