Manage Learn to apply best practices and optimize your operations.

Dynamic relative references for JavaScript & CSS files

Utilize formula language in the HTML Head Content attribute

Well-formed HTML is a worthy goal (some of us even try to render it to be well-formatted...), however it becomes tedious when working with some of the Notes/Domino features that don't allow computation, like the JS Header attribute of the form.

One way to get around this, and include all computed content in the HTML Head tags is to utilize formula language in the HTML Head Content attribute.

By doing this, we can preload images without having to parse the ".nsf" from the window.location.href, and reference all other types of modular files like JS, CSS, etc. The ability to resolve the database name without relying on the ".nsf" becomes mandatory when the homepage of your domino application is using a DNS. Using a virtual server with its own DNS may not include the path information to the database.

By using the following formula, all computed references may be handled dynamically to create a well formed HTML Head while having access to the computed database path. The JS Header may subsequently be used for any subsequent client-side scripting.

The following example assumes the following:
1) The page is not intended to be cached by the Web browser
2) There is a form field name "MetaKW" that contains valid meta data keywords
3) There is a form field name "MetaDesc" that contains a valid meta data description
4) There is a design element (in this case a Page) named "validation.js" used for embedded JavaScript
5) There is a design element (in this case a Page) named "DefaultCSS" used for Cascading Style Sheets
6) We have need of referencing the database name through use of the JavaScript variable (in this case "homeDb")

 REM "Begin HTMLHead Formula"; curDB := @ReplaceSubstring(@Subset(@DbName; -1) ; "\" ; "/"); noCache := "<meta http-equiv="PRAGMA" content="NO-CACHE">"; strMeta := "<META NAME="keywords" CONTENT="" + MetaKW + "">"; strMetaDesc := "<META NAME="description" CONTENT="" + MetaDesc + "">"; scriptSRC := "<SCRIPT LANGUAGE="JavaScript" src="/" + curDB + "/validation.js"></script>"; homeScriptVar := "<SCRIPT LANGUAGE="JavaScript">" + @NewLine + "var homeDb = '" + curDB+ "'" + @NewLine + "</script>"; cssSRC := "<LINK REL=stylesheet TYPE="text/css" HREF="/" + curDB + "/DefaultCSS" TITLE="style">"; REM "Draw out the concatenated string elements"; @NewLine + @NewLine + noCache + @NewLine + @NewLine + strMetaDesc + @NewLine + strMeta + @NewLine + @NewLine + scriptSRC +@NewLine + @NewLine + cssSRC + @NewLine + @NewLine + homeScriptVar + @NewLine + @NewLine

Dig Deeper on Domino Resources - Part 4

Start the conversation

Send me notifications when other members comment.

Please create a username to comment.




  • iSeries tutorials's tutorials provide in-depth information on the iSeries. Our iSeries tutorials address areas you need to know about...

  • V6R1 upgrade planning checklist

    When upgrading to V6R1, make sure your software will be supported, your programs will function and the correct PTFs have been ...

  • Connecting multiple iSeries systems through DDM

    Working with databases over multiple iSeries systems can be simple when remotely connecting logical partitions with distributed ...