Chrome 48 - Launching New Window and New Tab - Issues When Launching from LMS

Feb 08, 2016

Hello! Is anyone else have issues with launching URLs when using Chrome 48? 

Here is the scenario in Chrome:

  1. Log into LMS. (Window 1, Tab 1)
  2. Launch course. It opens in a separate window. (Window 2, Tab  1)
  3. Click a button/link to launch a separate URL. It opens in the original window in another tab. (Window 1, Tab 2).
    • When this happens, Window 2, which contains the tab with the in-progress course, is auto-minimized so the learner thinks that the tab with the new URL replaced the course.

In IE, the LMS, course, and launched URL(s), all behave as expected (opening in separate tabs in one window; or, in separate windows depending on the PC settings).

 

 

15 Replies
Christie Pollick

Hi, Sandy -- So sorry to hear of your troubles! As you've mentioned that you are having difficulties from your LMS, may I ask if you are seeing the same behavior when you test your course in the SCORM Cloud? You may also find this article on troubleshooting LMS issue to be helpful: How to Troubleshoot Your LMS with SCORM Cloud.

And also, could you possibly share the name of the LMS you are using? That way, in case others in the community utilize the same service, they would be able to share their advice or experiences. :)

Christie Pollick

Hi, Sandy -- Thanks so much for your response! I discussed this with a colleague, and how links or new windows and tabs are generated can be user-specific based on the browser, and how the LMS is telling it to access a link, as well.  So, it's not a setting specific to Storyline, even though you can add hyperlinks and set browser options; the browser may still override it. Please see this article for additional details. 

Sandy Sobotka

Hello,

Thanks for your response. The issue is new to courses launching through the
LMS in Chrome. For example, I have not changed my settings in Chrome, but
the behavior is now different than it was before.

I am wondering if anyone else is having this experience and what they are
doing about it. From a learner's perspective, the experience is different
and so therefore confusing and is causing inbound calls to LMS
administrators/training teams.

Thanks for any additional insights.

Steve Flowers

Hi Sandy - 

Yep. I've run into this in the past. SL1 and SL2 use different opener functions. SL1's opener worked OK with Chrome. SL2's will try to open in a new tab. To fix this, I added the opener function from SL1 to a Javascript trigger that runs when the page opens. Copy and paste the below into a trigger that runs before you launch the links that open a new window. 

////////////////////////////////////////////////////////////////////////////////
// Open Url
////////////////////////////////////////////////////////////////////////////////
OpenUrl=function(strUrl, strWindow, strWindowSize, strWidth, strHeight, strUseDefaultControls, strStatus, strToolbar, strLocation, strMenubar, strScrollbars, strResizable)
{

var nWndWidth = parseInt(strWidth);
var nWndHeight = parseInt(strHeight);
var bUseDefaultSize = (strWindowSize.toLowerCase() == "default");
var bUseDefaultControls = (strUseDefaultControls.toLowerCase() == "true");
var bFullScreen = (strWindowSize.toLowerCase() == "fullscreen");

strUrl = ReplaceAll(strUrl, "%25", "?");

if (bFullScreen)
{
nWndWidth = screen.availWidth;
nWndHeight = screen.availHeight;
}
else
{
if (nWndWidth > screen.availWidth)
{
nWndWidth = screen.availWidth;
}

if (nWndHeight > screen.availHeight)
{
nWndHeight = screen.availHeight;
}
}

var strOptions = "";
if (!bUseDefaultControls)
{
if (!bUseDefaultSize)
{
strOptions += "width=" + nWndWidth + ", ";
strOptions += "height=" + nWndHeight + ", ";
}

strOptions += "status=" + ((strStatus.toLowerCase() == "true") ? 1 : 0);
strOptions += ", toolbar=" + ((strToolbar.toLowerCase() == "true") ? 1 : 0);
strOptions += ", scrollbars=" + ((strScrollbars.toLowerCase() == "true") ? 1 : 0);
strOptions += ", resizable=" + ((strResizable.toLowerCase() == "true") ? 1 : 0);
strOptions += ", alwaysRaised=1";
}
else
{
strOptions += "status=1";
strOptions += ", toolbar=1";
strOptions += ", scrollbars=1";
strOptions += ", resizable=1";
strOptions += ", alwaysRaised=1";
}

var oNewWnd;

if (bUseDefaultSize && bUseDefaultControls)
{
g_wndLast = window.open(strUrl, strWindow, strOptions);
}
else if (bUseDefaultControls)
{
if (IE)
{
oNewWnd = window.open(GetBasePath() + g_strContentFolder + "/blank.html", strWindow, "alwaysRaised=true");

if (bFullScreen)
{
oNewWnd.moveTo(0, 0);
}

oNewWnd.resizeTo(nWndWidth, nWndHeight);
oNewWnd.document.location = strUrl;
}
else
{
oNewWnd = window.open(strUrl, strWindow, "alwaysRaised=true");
oNewWnd.resizeTo(nWndWidth, nWndHeight);
}

g_wndLast = oNewWnd;
}
else
{
oNewWnd = window.open(strUrl, strWindow, strOptions);
g_wndLast = oNewWnd;
}

if (bFullScreen && !(bUseDefaultControls && IE))
{
oNewWnd.moveTo(0, 0);
}

}

Sandy Sobotka

Thanks so much, Steve! Definitely an option to think about.

This particular project has over 25 URLs that links to different resources. I am not an expert at changing the java script, but I believe I would need to complete this step each and every time I publish, correct?

Do you know if Articulate is contemplating adding this SL1 function into SL2?

You rock!

Steve Flowers

If you add it to a trigger that is hit for sure every time the published output is launched, only need to do it once. It could be added to the slide master but this would swell the size of your user.js file.

The other way to do this is to overwrite the player template. In the SL program directory / Content folder you'll find a file called player.js. On or about line 826, the openURL function can be overwritten with the SL1 window open code. Saving this will add it to publish every time. The downside here, is if the client or someone else opens the file to republish it will magically stop working again. 

This discussion is closed. You can start a new discussion or contact Articulate Support.