Simpler way to update HTML/Media embedded via Web Object

Jan 07, 2021

I'm using Web Objects to add functionality to Storyline such as:

  • "Accordian" effects using Bootstrap
  • To allow people to copy/paste text
  • To embed PDFs using an <object> tag.

When I update this content, the process I follow is:

  1. Change the HTML using Dreamweaver/Visual Studio/etc...
  2. In Storyline, delete the Web Object.
  3. Add a new Web Object, pointing to the same folder on my local drive.
  4. Adjust the Web Object's size and position to match its predecessor.

This feels like it's unnecessarily complex. Is there a way I can tell Storyline to re-import the HTML from the folder it already knows about?

Even better, is there a way I can tell Storyline to update ALL web objects in a project at the point of publication, rather than having to do them all individually?

6 Replies
Math Notermans

As i used the same procedure for my Javascript libraries and generic functions i also searched for some better workflow. Tried using modules and export/import the javascript. Didnot get that working as i couldnot find where to add the import statement in Articulate's scripts.

What i did is adding folders to the Articulate Programme folder ( Program Files (x86) ) and in the appropriate HTML-files inthere adding lines to include those files/folders. For my libraries and scripts that works.

And because i want to easily update my files and libraries and use them both in Classic and Modern player i created a symbolic link to the files and folders so i can easily update it and it works like a charm.

Chris Reynolds

Thanks Math. Those sound like some fairly extraordinary steps to take!

I think I'll lodge a feature request. Before I do, I'll share my mock-up to this thread. Interest to hear any feedback from you or anyone else reading on the proposal before I submit.

Math Notermans

Nice and well thought through. One thing you are forgetting though and would be a great addition to your request. When adding a Webobject, Storyline creates a custom folder at publish-time with some complex name... it is created in the WebObjects folder... and each time you add a WebObject the name is unique. Eg. story_content/WebObjects/6hhpm2y6ejK
When using Javascript and loading that dynamically you need the path to that folder...
In my projects when using WebObjects i load them like this:
var scriptFolder ="story_content/WebObjects/6hhpm2y6ejK/";
loadJSfile(scriptFolder+"SPECIFIC/generic_functions.js", "js");

So when changing anything in the custom Javascript you need to update this code too, because the folder name changes.

If Articulate would pass that foldername through to Storyline in a variable..then you could get it and the need for updating code whenever you change something in your WebObjects would disappear.

Great work Chris.


PS. If the name stays the same after 'Reimport' well then this is unneeded. Might be good to include anyway.

Chris Reynolds

Here's how I think that could look:

  • The ID is the one that you're currently using and changes at publish time.
  • The variable name is generated when the web object is created and never changes. If the web object is duplicated then the duplicate gets a unique variable name. If the web object is deleted, its variable name is never reused.
  • A "copy" link is included to reduce the risk of transcription errors.
  • The variable would be considered a "built in" variable that cannot be modified or deleted by the user.

Sounds reasonable?