[ANNOYANCE] Custom protocols that are not registered do not trigger browserBeforeNavigate correctly on windows.

Terry Judd tsj at unimelb.edu.au
Mon Aug 9 18:39:44 EDT 2010


Thanks Andre, that sounds very promising. I'll give it a whirl.

Terry...


On 9/08/10 10:55 PM, "Andre Garzia" <andre at andregarzia.com> wrote:

> Terry,
> 
> I believe that this can be "fixed" by using client side javascript only. By
> fixed I mean "restore that behaviour". If you specify an action that is a
> javascript function and in that function you assemble your parameters in a
> url and set the window.location of the running page, it should trigger
> browserBeforeNavigate with the URL from the js function and your parameters
> there. This should work on both windows and mac os x and it is quite an
> elegant solution.
> 
> Andre
> 
> On Mon, Aug 9, 2010 at 1:47 AM, Terry Judd <tsj at unimelb.edu.au> wrote:
> 
>> What's really annoying is that you used to be able to grab data from form
>> elements using browserBeforeNavigate - the values of the form elements
>> would
>> be reported in the url variable, even if no action was ascribed to the
>> form.
>> This was really useful as you could use a webform to capture some user
>> entered data, intercept it with browserBeforeNavigate, process and/or store
>> it in Rev and then do some other stuff - in some cases removing the need
>> for
>> server-side logic or cookies (for example, I used it to store and retrieve
>> student's quiz answers submitted during a session).
>> 
>> This still works in OSX (you just have to parse some 'garbage' off the
>> front
>> of the URL) but broke in one of the earlier versions of the revBrowser
>> externals for Windows. AFAIA, it still works with the original altBrowser
>> external.
>> 
>> I reported this some time ago (more than 3 years) but it was never fixed
>> and
>> my original bug report has disappeared. I for one would like to see this
>> feature reinstated.
>> 
>> Anyone else?
>> 
>> 
>> On 8/08/10 9:50 AM, "Andre Garzia" <andre at andregarzia.com> wrote:
>> 
>>> Folks,
>>> 
>>> Sometimes do you want to create some fancy interface using RevBrowser and
>>> want to communicate back with the stack that hosts the RevBrowsr view.
>> One
>>> quick way of doing this is to use custom protocols (so that you know that
>>> url is yours) such as:
>>> 
>>>   myapp:refreshGui
>>>   myapp:executeHandler/doStuff
>>> 
>>> For example, some construct like:
>>> 
>>>   <a href="myapp:refreshGui">Click here to Refresh GUI</a>
>>> 
>>> When that link is clicked, you could use a browserBeforeNavigate handler
>>> such as this one:
>>> 
>>>   on browserBeforeNavigate pID, pURL
>>>     set the itemdel to ":"
>>>     if word 1 of pURL is "myapp" then
>>>       -- our protocol!
>>>       switch word 2 of pURL
>>>         case "refreshGui"
>>>           refreshGui
>>>           break
>>>       end switch
>>>     put true into browserCancel
>>>     end if
>>>   end browserBeforeNavigate
>>> 
>>> 
>>> This of course works great on Mac OS X and you can create your own
>> browser
>>> windows that trigger things back with no problem and you don't mix
>>> http://or other protocols with your own, very elegant.
>>> 
>>> Now on Windows land (damn you Redmond!!!) things are different. It
>> appears
>>> that browserBeforeNavigate is only triggered afted IE renderer inspects
>> the
>>> URL. When it finds out a custom protocol, it checks to know if the system
>>> can handle it. If you are using your own and haven't fiddled with Windows
>>> Registry to register it, that check will fail and IE will change the damn
>>> URL for you pointing to a internal windows dll page showing something
>> like:
>>> "Hey Fella, I don't know how to handle this!" which of course is an
>> exercise
>>> in patience since my own browserBeforeNavigate will prevent IE from even
>>> trying to handle my own protocol.
>>> 
>>> This is not a RevBrowser BUG per se since RevBrowser is not doing
>> anything,
>>> it is IE again in its infinite wisdom trying to do things for you (which
>> it
>>> shouldn't). The only solution in these case is to add lots of Registry
>>> information, registering your own protocol, which will probably make
>> windows
>>> try to relaunch your standalone for every of those links.
>>> 
>>> Damn, microsoft always makes my life harder!
>>> 
>>> Andre
>>> 
>>> 
>>> 
>> 
>> --
>> Dr Terry Judd | Senior Lecturer in Medical Education
>> Medical Education Unit
>> Melbourne Medical School
>> The University of Melbourne
>> 
>> 
>> _______________________________________________
>> use-revolution mailing list
>> use-revolution at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-revolution
>> 
> 
> 

--
Dr Terry Judd | Senior Lecturer in Medical Education
Medical Education Unit
Melbourne Medical School
The University of Melbourne





More information about the use-livecode mailing list