我知道有很多类似的问题,唯一的不同是我从**相同**域中投放的两个页面都得到了这个问题。在下面的示例中可以看到。
Uncaught DOMException: Blocked a frame with origin "https://content.samba.net" from accessing a cross-origin frame.
at findAPI (https://content.samba.net/00/07/19-10/scorm_support/scorm_support.js:14:10)
at getAPI (https://content.samba.net/00/07/19-10/scorm_support/scorm_support.js:61:13)
at https://content.samba.net/00/07/19-10/SCORM.htm:200:16
这不是只发生在不同的域之间吗?
=============================编辑============== ======================
当然,发布几秒钟后,我发现了问题。 SCORM程序包具有查找SCORM API的功能。它看起来在顶部和开瓶器。在我的情况下,Window Opener在另一个域中,它正在尝试访问该域。
为了历史,我将其保留。我的答案有详细信息。
答案 0 :(得分:1)
该问题已解决,并且特定于SCORM协议。
当您打开一段SCORM内容(即一堆html,flash,js和其他媒体文件)时,它要做的第一件事就是试图找到SCORM api。
SCORM api是JS,必须在加载SCORM内容的窗口中。
在某些SCORM软件包中,查找API的函数递归地查找TOP窗口,即启动整个过程的初始窗口。
在我的情况下,这是我站点上的一个窗口,该窗口在我的CDN中弹出了SCORM启动器,该CDN具有不同的域名。
要解决此问题,我要做的就是欺骗浏览器,使SCORM启动器(我在CDN上弹出的窗口)认为是TOP,方法是在其中添加以下两个js行:
{
“fields”:[“first_name",”last_name”,”street”,”city”,”state”,”postal_code”,"email.address”,”age”,”family.estimated_income”,”real_estate.estimated_home_value”,”family.appeared_on”],
"identifiers": {
"first_name": "Jim",
"last_name": "Shoo",
"street": "123 Main St",
"city": "Chicago",
"postal_code": "60600"
}
}