Pipwerks on BB

25 views
Skip to first unread message

Charles Parcell

unread,
Nov 2, 2009, 4:46:12 PM11/2/09
to eLearning Technology and Development
I have a contract that is all but done. It is holding on by tooth and
nail. Any insight (no matter how odd seeming) is welcomed at this
point.

Aiming for SCORM 1.2 with this one. Using the pipwerks API (JS).

It functions correctly locally, in ADL Test Suite, and on Saba. On
Blackboard (7.3 I believe) it is failing. The course launches in a
seperate window. My header and toolbar areas are loading. The XML I
build everything from seems to be getting loaded. My header area is
populating with content from my XML. At first I thought it might be
some weird MIME issue with XML. But I now have a debugger running on
it and I discovered something that is causing me to scratch my head.
The pipwerks API things that the course ware is running in a SCORM
2004 environment via the auto detect feature.

Does anyone else use this API on a BB server? Does it work? Are there
modifications I need to make to that API?

I have not yet manually set the API to SCORM 1.2 That will be my next
attempt. But I would really like to discover how I can get the auto
detect to cover this issue (if this is the problem at all).

Charles P.

Philip Hutchison

unread,
Nov 2, 2009, 5:24:30 PM11/2/09
to elearning-technolo...@googlegroups.com
Hmm... works on Saba but not BB? That's a first!  :)

I admit it isn't a completely fool-proof system; I wrote a slightly revised version of the API detection earlier this year, but I don't want to release it yet as I haven't fully tested it.

The best thing is to set the SCORM version manually (it's pretty trivial to do).

- philip

Charles Parcell

unread,
Nov 2, 2009, 6:01:57 PM11/2/09
to eLearning Technology and Development
Yes, indeed this is the issue. After manually setting the SCORM
version it worked as expected.

I need to look further into this, but it would seem that BB 7.3 has
both the 2004 and 1.2 names exposed but is only using the 1.2 API.

The auto detection was finding the SCORM 2004 handle and so it thought
it could make the 2004 calls.

I also have someone testing this on BB 9.0 and the issue seems to
exist there as well.

Charles P.


On Nov 2, 5:24 pm, Philip Hutchison <platelu...@gmail.com> wrote:
> Hmm... works on Saba but not BB? That's a first!  :)
>
> I admit it isn't a completely fool-proof system; I wrote a slightly revised
> version of the API detection earlier this year, but I don't want to release
> it yet as I haven't fully tested it.
>
> The best thing is to set the SCORM version manually (it's pretty trivial to
> do).
>
> - philip
>
> On Mon, Nov 2, 2009 at 1:46 PM, Charles Parcell
> <charles.parc...@gmail.com>wrote:

Philip Hutchison

unread,
Nov 2, 2009, 6:25:21 PM11/2/09
to elearning-technolo...@googlegroups.com
If that's the case, they're violating the spec and there isn't much we can do about it. You'd need to specify it manually every time.

Ryan Meyer

unread,
Nov 2, 2009, 6:44:30 PM11/2/09
to elearning-technolo...@googlegroups.com
On a side note, have you done any testing in Firefox (both Windows and Mac) or in Safari on a Mac? I've been trying to get a SCORM course (not using the pipwerks API, by the way) working in Blackboard and have had a heck of a time. The applet that their Open Standards Content Player uses for SCORM communication with the LMS seems to have some major initialization issues. Often, the first call to LMSInitialize("") fails completely with an error saying that the function "is not defined". In the cases where it does work, it takes up to 10 seconds for the call to return. This was inconvenient, but I can workaround it. The only workaround I've found for the "function is not defined" issue is to reload the window completely, but that only works on Windows, not on Mac. And in BOTH browsers, the first SCO won't launch automatically - it requires the learner to click on the SCO title on the left while the content screen displays a useless "Loading..." message.

I've never worked with Blackboard before, but from what I've seen so far in going through their code, the SCORM support leaves a lot to be desired. The buggy issues you found with respect to SCORM 2004/1.2 support don't surprise me one bit.

Thanks for any pointers!
-Ryan

Charles Parcell

unread,
Nov 2, 2009, 9:29:33 PM11/2/09
to elearning-technolo...@googlegroups.com
What version of BB is the server running?  Which SCORM version are you targeting?


Not at all the same situation but I found my issue because I was debugging and the my code broke at the Initialize function call. It said the method was not supported. That is when I realized that even though it had found the SCORM 2004 handle, the BB SCORM player didn't know what the SCORM 2004 method Initialize() was.


Charles P.

Ryan Meyer

unread,
Nov 2, 2009, 10:11:20 PM11/2/09
to elearning-technolo...@googlegroups.com
I'm targeting SCORM 1.2. The server versions are 8.x and 9.x (not sure of the exact sub-versions, but I could get them if it would help.)

Charles Parcell

unread,
Nov 3, 2009, 1:35:30 AM11/3/09
to elearning-technolo...@googlegroups.com
Typically you will want to wait till the page has loaded before making LMS calls.  Are you executing your JS call to initialize in a function triggered by onLoad? Or are you placing it in a header script of the HTML page?

You may also want to consider (if you are not already) wrapping your SCORM calls within conditions that make sure the API was found.

For example, the pipwerks API wraps the LMSInitialize call within 2 conditions. The first checks to make sure that the API was found. The second makes sure there is a handle to that API.

Charles P.

Ryan Meyer

unread,
Nov 3, 2009, 10:16:12 AM11/3/09
to elearning-technolo...@googlegroups.com
Charles,
Thanks for the help. Yes, this is all occuring onLoad. (Actually, it's in a separate page that pops up from the SCO, so it's delayed even further.) And yes, the SCORM calls are all wrapped with condition checks. The problem is that the initial calls to load in stored bookmark, etc. were assuming that LMSInitialize("") returned right away. I've changed them to wait until that call returns (which can take up to 10 seconds in Firefox). However, the issue with the LMSInitialize("") function not even being accessible on the applet is even nastier. It looks like a bug with Firefox and applets. When it occurs, the Javascript applet object is permanently messed up - the exposed functions are *never* made available. The page has to be reloaded so it can try again.

Sounds like no one else has run into this problem. I can't see what I'm doing "out of the ordinary" though to cause any abnormal behavior. Anyway, sorry to have hijacked the thread!

Thanks guys,
Ryan

Ted Powers

unread,
Nov 3, 2009, 10:56:02 AM11/3/09
to elearning-technolo...@googlegroups.com
Ryan,
I would try running the java console along with a network sniffer like Fiddler2 while launching the course.
This may help us determine the timing of the applet being loaded and the when the course is firing off the init.
It will also tell us if there is anything happening to the applet and to see what kind of responses you are sending and receiving.

Does this same issue occur with IE? is your Firefox running on Vista or XP or 7 or something else?
What version of Java do you have on your machine?
You can also make sure you are using the correct version of java by using: about:plugins to determin if the correct plugin for java is being used.

Here is another site i found regarding java and firefox. it might be helpful to you in figurig out what is happening to the applet.
http://kb.mozillazine.org/Firefox_:_FAQs_:_Install_Java#Java_not_working_after_Firefox_2.0.0.8_update_-_Windows_Vista

Ted

Ryan Meyer

unread,
Nov 3, 2009, 11:39:50 AM11/3/09
to elearning-technolo...@googlegroups.com
Ted,
Fiddler wouldn't show anything useful in this case. The call never even makes it to the applet, so no communication occurs. I haven't looked much at the Java console yet, but it might show something useful. I'll give it a shot today.

This issue does *not* occur with IE, only Firefox (running 3.0.15 on Windows XP and Mac.) Firefox on Windows was able to be fixed by automatically reloading the window when I detect the "LMSInitialize is not a function" javascript error. Apparently, the Java Runtime has had a chance to "warm up" so the applet initializes before I make the first call on it. If i reload the page, or exit and come back quickly, it seems to work fine. But if I wait for a while (maybe a minute or two) before accessing the page again, it fails on the first attempt.

On Firefox on Mac, it seems like it very rarely works even when I reload the page, or retry the call several times in a row after a 1-second delay. Or a combination of both.

And on Safari on Mac, the course won't even launch due to Javascript issues in Blackboard's Open Standards Content Player!

Here are some links describing the Javascript->Java issue in Firefox. Unfortunately, no good solutions:
http://www.velocityreviews.com/forums/t369914-java-js-applet-communication-problem-with-firefox.html
http://support.mozilla.com/tiki-view_forum_thread.php?comments_offset=0&comments_threadId=0&comments_parentId=434045&comments_threshold=0&thread_sort_mode=commentDate_asc&forumId=1&time_control=
http://stackoverflow.com/questions/1536814/java-error-in-firefox-myapplet-myfunction-is-not-a-function
http://userscripts.org/topics/34108

Thanks,
Ryan

Charles Parcell

unread,
Nov 3, 2009, 1:21:18 PM11/3/09
to eLearning Technology and Development
Yeah, it really sounds as if your issue is not even BB directly, but
rather the fact that the RTE is taking a long time to load up and thus
initialize the API object.

This is a really really really long shot, try and see if these
settings in Java correct anything.

Control Panel -> Java -> Advanced tab -> Default Java for browsers
Make sure it is checked for "Mozilla family"

Control Panel -> Java -> Advanced tab -> Java Plug-in
Uncheck "Enable the next-generation Java Plug-in"


Aside from these options, the only other option I can even come up
with is to force the Java RTE to initialize as soon as you can by
calling some dummy applet right off on the first page.

Hope something here helps.

Charles P.


On Nov 3, 11:39 am, Ryan Meyer <ryan.e.me...@gmail.com> wrote:
> Ted,
> Fiddler wouldn't show anything useful in this case. The call never even
> makes it to the applet, so no communication occurs. I haven't looked much at
> the Java console yet, but it might show something useful. I'll give it a
> shot today.
>
> This issue does *not* occur with IE, only Firefox (running 3.0.15 on Windows
> XP and Mac.) Firefox on Windows was able to be fixed by automatically
> reloading the window when I detect the "LMSInitialize is not a function"
> javascript error. Apparently, the Java Runtime has had a chance to "warm up"
> so the applet initializes before I make the first call on it. If i reload
> the page, or exit and come back quickly, it seems to work fine. But if I
> wait for a while (maybe a minute or two) before accessing the page again, it
> fails on the first attempt.
>
> On Firefox on Mac, it seems like it very rarely works even when I reload the
> page, or retry the call several times in a row after a 1-second delay. Or a
> combination of both.
>
> And on Safari on Mac, the course won't even launch due to Javascript issues
> in Blackboard's Open Standards Content Player!
>
> Here are some links describing the Javascript->Java issue in Firefox.
> Unfortunately, no good solutions:http://www.velocityreviews.com/forums/t369914-java-js-applet-communic...http://support.mozilla.com/tiki-view_forum_thread.php?comments_offset...http://stackoverflow.com/questions/1536814/java-error-in-firefox-myap...http://userscripts.org/topics/34108
>
> Thanks,
> Ryan
>
>
>
> On Tue, Nov 3, 2009 at 10:56 AM, Ted Powers <pow...@gmail.com> wrote:
> > Ryan,
> > I would try running the java console along with a network sniffer like
> > Fiddler2 while launching the course.
> > This may help us determine the timing of the applet being loaded and the
> > when the course is firing off the init.
> > It will also tell us if there is anything happening to the applet and to
> > see what kind of responses you are sending and receiving.
>
> > Does this same issue occur with IE? is your Firefox running on Vista or XP
> > or 7 or something else?
> > What version of Java do you have on your machine?
> > You can also make sure you are using the correct version of java by using:
> > about:plugins <http://kb.mozillazine.org/About:plugins> to determin if the
> > correct plugin for java is being used.
>
> > Here is another site i found regarding java and firefox. it might be
> > helpful to you in figurig out what is happening to the applet.
>
> >http://kb.mozillazine.org/Firefox_:_FAQs_:_Install_Java#Java_not_work...
>
> > Ted
>
> > On Tue, Nov 3, 2009 at 9:16 AM, Ryan Meyer <ryan.e.me...@gmail.com> wrote:
>
> >> Charles,
> >> Thanks for the help. Yes, this is all occuring onLoad. (Actually, it's in
> >> a separate page that pops up from the SCO, so it's delayed even further.)
> >> And yes, the SCORM calls are all wrapped with condition checks. The problem
> >> is that the initial calls to load in stored bookmark, etc. were assuming
> >> that LMSInitialize("") returned right away. I've changed them to wait until
> >> that call returns (which can take up to 10 seconds in Firefox). However, the
> >> issue with the LMSInitialize("") function not even being accessible on the
> >> applet is even nastier. It looks like a bug with Firefox and applets. When
> >> it occurs, the Javascript applet object is permanently messed up - the
> >> exposed functions are *never* made available. The page has to be reloaded so
> >> it can try again.
>
> >> Sounds like no one else has run into this problem. I can't see what I'm
> >> doing "out of the ordinary" though to cause any abnormal behavior. Anyway,
> >> sorry to have hijacked the thread!
>
> >> Thanks guys,
> >>  Ryan
>
> >> On Tue, Nov 3, 2009 at 1:35 AM, Charles Parcell <pokemonkil...@gmail.com>wrote:
>
> >>> Typically you will want to wait till the page has loaded before making
> >>> LMS calls.  Are you executing your JS call to initialize in a function
> >>> triggered by onLoad? Or are you placing it in a header script of the HTML
> >>> page?
>
> >>> You may also want to consider (if you are not already) wrapping your
> >>> SCORM calls within conditions that make sure the API was found.
>
> >>> For example, the pipwerks API wraps the LMSInitialize call within 2
> >>> conditions. The first checks to make sure that the API was found. The second
> >>> makes sure there is a handle to that API.
>
> >>> Charles P.
>
> >>> On Mon, Nov 2, 2009 at 10:11 PM, Ryan Meyer <ryan.e.me...@gmail.com>wrote:
>
> >>>> I'm targeting SCORM 1.2. The server versions are 8.x and 9.x (not sure
> >>>> of the exact sub-versions, but I could get them if it would help.)
>
> >>>> On Mon, Nov 2, 2009 at 9:29 PM, Charles Parcell <
> >>>> pokemonkil...@gmail.com> wrote:
>
> >>>>> What version of BB is the server running?  Which SCORM version are you
> >>>>> targeting?
>
> >>>>> Not at all the same situation but I found my issue because I was
> >>>>> debugging and the my code broke at the Initialize function call. It said the
> >>>>> method was not supported. That is when I realized that even though it had
> >>>>> found the SCORM 2004 handle, the BB SCORM player didn't know what the SCORM
> >>>>> 2004 method Initialize() was.
>
> >>>>> Charles P.
>

Charles Parcell

unread,
Nov 3, 2009, 3:04:27 PM11/3/09
to eLearning Technology and Development
I have been talking with the BB admin that is on site.

Just as I was guessing based on my testing.

It seems that BB is exposing both APIs in the 1.2 Player (API and
API_1484_11). Even though the 2004 API is exposed, it is not actually
accessible as a 2004 API. The comment in the code even leads you to
believe that it is exposing the 2004 API.

This is what was messing up my package. Because the auto detection it
is checking for 2004 first and finding it, it was sending 2004 method
calls to the LMS. But because those APIs are not really available in
the 1.2 Player, the JS would halt do to an error and completely stop
processing further code.

I have corrected this issue for my course by simply forcing the API to
only look for the 1.2 API.

See below for part of the Blackboard building block code for the 1.2
Player.



-----Original Message-----

function initAPI(win)
{
// set the object that needs to be made available for SCORM
1.2 compliant content
API = window.LMSFrame.document.getElementById("APIAdapter");
// set the object that needs to be made available for SCORM
1.3 compliant content
API_1484_11 = window.LMSFrame.document.getElementById
("APIAdapter");

if ((API == null) || (API_1484_11 == null)) {
return false;
}
else {
clearInterval(ourInterval);
}

}

var ourInterval = setInterval("initAPI()", 1000);


Charles P.


On Nov 2, 6:25 pm, Philip Hutchison <platelu...@gmail.com> wrote:
> If that's the case, they're violating the spec and there isn't much we can
> do about it. You'd need to specify it manually every time.
>
> On Mon, Nov 2, 2009 at 3:01 PM, Charles Parcell
> <charles.parc...@gmail.com>wrote:

Ryan Meyer

unread,
Nov 3, 2009, 3:10:10 PM11/3/09
to elearning-technolo...@googlegroups.com
Charles,
Thanks for the suggestions, but no dice on the settings. Those were both already configured as you had suggested. I'm going to fiddle around with getting another applet on the page to see if that can kickstart the Java RTE.
Thanks for all your help!
Ryan

Charles Parcell

unread,
Nov 3, 2009, 3:44:37 PM11/3/09
to eLearning Technology and Development
Wish I had more to give ya.

Let us know if the kick start works.

Charles P.


On Nov 3, 3:10 pm, Ryan Meyer <ryan.e.me...@gmail.com> wrote:
> Charles,
> Thanks for the suggestions, but no dice on the settings. Those were both
> already configured as you had suggested. I'm going to fiddle around with
> getting another applet on the page to see if that can kickstart the Java
> RTE.
> Thanks for all your help!
> Ryan
>
> On Tue, Nov 3, 2009 at 1:21 PM, Charles Parcell
> <charles.parc...@gmail.com>wrote:
> ...
>
> read more »

Charles Parcell

unread,
Nov 3, 2009, 5:42:15 PM11/3/09
to eLearning Technology and Development
Reading some other sites I ran across this tidbit.
- To speed the Java plugin up on Windows, use the Java Control Panel
to disable the Java icon appearing in the system tray, and disable the
Java console.

Another item I thought about was to make sure you only have one
version of Java installed. I know older versions would add a new
install rather than simply updating the currently installed version.
This leaves you with multiple versions in your Windows Control Panel -
> Add Remove Programs list.

Lastly, try turning off all other FireFox plugins/add-ons/themes just
to see if they are somehow causing a conflict or issue.

Charles P.
> ...
>
> read more »
Reply all
Reply to author
Forward
0 new messages