SAP Knowledge Base Article - Public

2808684 - Content not communicating or loading when opening inline

Symptom

Content that works user to work in the legacy user interface is not communicating or loading with Course Home enabled.

Environment

SAP SuccessFactors Learning

Reproducing the Issue

Lauching content that contains window.top calls can lead to these issue's.

  1. Press F12 on your keyboard to open your developer tools.
  2. Launch the content with the issue.
  3. Navigate to the "Console Tab" on developer tools. If you see the error "Blocked a frame with origin "" from accessing a cross-origin frame."

Cause

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.

CourseHome windows top.PNG

In order to record the completion of a SCORM-type content, the LMS integrating the content (in this case, Learning) must make available a JavaScript SCORM API. As recommended by SCORM guidelines, Learning attaches this API to the parent window of the content (the "LMS" window in the image above).

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 it occur only on Course Home?

The issue is 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.

Resolution

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.

Example issue:

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.

Workaround: By configuring the content to be opened in a new window, rather than inline on the same page, this issue will no longer occur.

See Also

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

Keywords

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

Product

SAP SuccessFactors HCM Core 1902 ; SAP SuccessFactors Learning all versions