SnTT: DocumentUniqueID is not unique enough for Dojo

Hurray, a Show and Tell Thursday posting. Long time no see. :) I had the pleasure to integrate the Back-Button functionality provided by Dojo into an existing Lotus Notes/Domino Web-Application.

General - Documentation, Examples

Which is rather straight forward, if you read the documentation carefully and maybe take a look into the source code. A good place to start is also the test code for the functionality you need which you get if you download the „Non-obfuscated version for debugging”.

Dojo settings

I pulled all the debugging and the settings for the back-functionality into a separate JavaScript section, to make it more readable. This gets inserted into the „HTML Head Content” of the form (the field PDojoDBH holds the path to the Dojo library):
"<script language=\"JavaScript\" type=\"text/javascript\">" +  @NewLine + "   var djConfig = {" +  @NewLine + "      isDebug: true," +  @NewLine + "      //debugAtAllCosts: true," +  @NewLine + "      preventBackButtonFix: false, " +  @NewLine + "      dojoIframeHistoryUrl: \"" + PDojoDBH + "dojo/resources/iframe_history.html\"" +  @NewLine + "   }" +  @NewLine + "</script>" +  @NewLine<
which outputs:
<script language="JavaScript" type="text/javascript">
    var djConfig = {
        isDebug: false,
        //debugAtAllCosts: true,
        preventBackButtonFix: false, 
        dojoIframeHistoryUrl: "/dojo.nsf$files/dojo/resources/iframe_history.html"
    }
</script>
 

IE support

If you are, like me, using Firefox with the fabulous Firebug for web development, it is easy to forget about Microsofts Internet Explorer. Unfortunately, it still holds a major part of the market and we therefore have to support it. I spent a whole afternoon chasing a non-existent bug, as the Back-button worked in Firefox, but not in IE. I fixed it by taking a look at the source, which states (prominently):
        back.init = function(){
        //summary: Initializes the undo stack. This must be called from a <script> 
        //         block that lives inside the <body> tag to prevent bugs on IE.
So if you add a
<script type="text/javascript"> 
    dojo.back.init();
</script>
as „Pass-Through HTML” at the beginning of your form, the back-Button will also work in IE up to and including IE 7. IE 8 still has some problems.

Unique Identifier

In order for the Dojo back-button functionality to work, each entry in the browser history stack needs an unique fragment identifier. Now if you – like me – think, that the NotesDocumentID would be ideal for that, think again. If you navigate for example the sequence InitState, Doc3, Doc4, Doc3, Doc2 while using the DocID as a fragment identifier, you will never get back to the InitState, als the second and fourth entry in the history stack have the same fragment identifier/docID. So I switched from using the DocumentUniqueID to using the fragment identifiers, that Dojo automagically creates, if you set „changeUrl” to true.
IDDojoState = function(id) {
    this.stateData = id;
    this.changeUrl = true;
See the Dojo test-code for details.

Tagged as: , , , , | Author:
[Donnerstag, 20081120, 17:32 | permanent link | 0 Kommentar(e)

Comments are closed for this story.


Disclaimer

„Leyrers Online Pamphlet“ ist die persönliche Website von mir, Martin Leyrer. Die hier veröffentlichten Beiträge spiegeln meine Ideen, Interessen, meinen Humor und fallweise auch mein Leben wider.
The postings on this site are my own and do not represent the positions, strategies or opinions of any former, current or future employer of mine.

Search

RSS Feed RSS Feed

Tag Cloud

2007, a-trust, a.trust, a1, accessability, acta, advent, age, amazon, ankündigung, apache, apple, audio, austria, backup, barcamp, bba, big brother awards, birthday, blog, blogging, book, books, browser, Browser_-_Firefox, bruce sterling, buch, bürgerkarte, cars, cartoon, ccc, cfp, christmas, cloud, collection, computer, computing, concert, conference, copyright, database, date, datenschutz, debian, delicious, demokratie, design, desktop, deutsch, deutschland, dev, developer, digitalks, dilbert, disobay, dna, dns, Doctor Who, documentation, domino, Domino, Douglas Adams, download, drm, dsk, dvd, e-card, e-government, e-mail, e-voting, E71, Ein_Tag_im_Leben, email, eu, event, exchange, Extensions, fail, feedback, film, firefox, flightexpress, food, foto, fsfe, fun, future, games, gaming, geek, geld, gleichberechtigung, google, graz, grüne, grüninnen, hack, hacker, handtuch, handy, hardware, HHGTTG, history, how-to, howto, hp, html, humor, ibm, IBM, ical, image, innovation, intel, internet, internet explorer, iphone, ipod, isp, IT, it, java, javascript, job, journalismus, keyboard, knowledge, konzert, language, laptop, law, lego, lenovo, life, links, Linux, linux, linuxwochen, linuxwochenende, living, lol, london, lost+found, Lotus, lotus, lotus notes, Lotus Notes, LotusNotes, lotusnotes, lotusphere, Lotusphere, Lotusphere2006, lotusphere2007, Lotusphere2008, lotusphere2008, lustig, m3_bei_der_Arbeit, mac, mail, marketing, mathematik, media, medien, metalab, Microsoft, microsoft, mITtendrin, mobile, mood, movie, mp3, multimedia, music, musik, männer, nasa, netwatcher, network, netzpolitik, news, nokia, Notes, notes, Notes+Domino, office, online, OOXML, open source, openoffice, opensource, orf, orlando, os, outlook, patents, pc, pdf, perl, personal, php, picture, pictures, podcast, politics, politik, pr, press, presse, privacy, privatsphäre, productivity, programming, protest, qtalk, quintessenz, quote, quotes, radio, rant, recherche, recht, release, review, rezension, rss, science, search, security, server, sf, shaarli, Show-n-tell thursday, sicherheit, silverlight, SnTT, social media, software, sony, sound, space, spam, sprache, spö, ssh, ssl, standards, storage, story, stupid, summerspecial, sun, sysadmin, talk, talks, technology, The Hitchhikers Guide to the Galaxy, theme, think, thinkpad, tip, tipp, tools, topgear, torrent, towel, Towel Day, TowelDay, travel, truth, tv, twitter, ubuntu, uk, unix, update, usa, vds, video, videoüberwachung, vienna, Vim, vim, vista, vorratsdatenspeicherung, vortrag, wahl, wcm, web, web 2.0, web2.0, web20, Web20, webdesign, werbung, wien, wiener linien, wikileaks, windows, windows 7, wired, wishlist, wissen, Wissen_ist_Macht, wlan, work, wow, wtf, wunschzettel, Wunschzettel, www, xbox, xml, xp, zensur, zukunft, zune, österreich, övp, übersetzung, überwachung

AFK Readinglist