Content that works in the old UI, is not communicating or loading with new UI Course Home enabled.
SAP SuccessFactors Learning
Reproducing the Issue
Lauching content that contains window.top calls can lead to these issue's.
- Press F12 on your keyboard to open your developer tools.
- Launch the content with the issue.
- Navigate to the "Console Tab" on developer tools. If you see the error "Blocked a frame with origin "" from accessing a cross-origin frame."
The root cause for this defect is the same for all content types: a cross-domain violation caused by accessing the BizX common header window.
To locate the LMS API, the SCORM content executes a search algorithm on the current window hierarchy. In the case of EON content, the search algorithm, which is implemented by content providers, attempts to check the BizX Common Header window before the LMS window.
Because the BizX Common Header is located on a different domain from both LMS and the SCORM content windows, browser cross-domain security restrictions are violated as soon as window access is attempted, and the search algorithm is immediately terminated before finding the LMS API. Without the LMS API, the content is unable to communicate with Learning, so no status changes can be recorded.
Why does this occur only on Course Home?
The issue is now being noticed by customers because Course Home embeds the content directly in the page, at the bottom of the window hierarchy, as opposed to the legacy item details page, which opens content in a new window. The usage of a separate window hierarchy on the legacy details page means that users will not see this issue there.
Recommendations for Content Providers
Although the following is the root cause of the issue example, the cross-domain access violation, is the same, the implementations of the content differ. Therefore, recommendation example will be presented here but please note this will not cover every content type or file as they vary from content to content.
The content's API search algorithm does not follow SCORM guidelines. SCORM guidelines recommend that content check for the API on the first iteration of the search algorithm. Please see the SCORM API Discovery Guidelines. In addtion, this article may assist the content developer in writing their discovery algorithm. Instead of checking for the API on the first available window, the content recurses into the second parent window before making any API checks. See /static/core/library/course/course.js. The search algorithm begins by calling lookupScormApi. It then calls getScormApi with the first parent, which in turns calls getScormAPIRecursive on the next parent:// search API in parent:var scormAPI = this.getScormAPIRecursive( objRootWin.parent, version );
Instead, this could become:
// search API in parent:
var scormAPI = this.getScormAPIRecursive( objRootWin, version ); // Check the root window first. The LMS API will be located there.
Future Actions by Learning
We have been informed by Product Management that we have planned an enhancement for Course Home which will provide customers with the option to open content in a new window, rather than inline on the same page. Once this enhancement is implemented and turned on by affected customers, this issue will no longer occur, as the content will open in a separate window hierarchy. It would no longer able to unintentionally access the BizX Common Header window. At this time there is no timeline for implementing this enhancement. This will be commuincated through release notes by Product Management.
2560044 - Course Home view is not loading for all items
2692689 - Course Home - Unable to start content
2692574 - Course Home - SCORM content reloads when opening and closing content menu
Currently Raised Enhancanment Requests:
Course Home details in the LMS Release notes:
learning, scorm 2004, course home, lms, add new content, object, package, navigation, Console Tab, Blocked a frame with origin, from accessing a cross-origin frame , KBA , LOD-SF-LMS-CNT , Content , Problem