W3C home > Mailing lists > Public > public-xformsusers@w3.org > November 2017

Re: Link traversal failure with <load/>

From: Steven Pemberton <steven.pemberton@cwi.nl>
Date: Wed, 01 Nov 2017 11:37:42 +0100
To: "Erik Bruchez" <ebruchez@orbeon.com>
Cc: XForms <public-xformsusers@w3.org>
Message-ID: <op.y80s44ctsmjzpq@steven-xps>
Yes, I understand that if you actually activate the link, and then there's  
a 404, and you replace the context, there's nothing we can do. But there  
are other cases.

For instance, if I look at the event log in XSLTForms for a load that is  
failing for me, I see:

0 -> Dispatching event DOMActivate on <SPAN class="testCaseName Value  
xforms-control xforms-trigger xforms-appearance-minimal xforms-focus"  
id="clonedId1397"/>
2 -> effectiveTarget:true
3 -> Captured event DOMActivate on <SPAN class="testCaseName Value  
xforms-control xforms-trigger xforms-appearance-minimal xforms-focus"  
id="clonedId1397"/>
4 -> Load Chapt07/7.12/7.12.a.xhtml
119 -> Cannot convert 'targetelt' to object
10 -> ERROR: Cannot dispatch event as the target is null

I haven't worked out what is happening yet, but it seems to me that in  
this sort of case something like an xforms-link-error would be in order  
(https://www.w3.org/community/xformsusers/wiki/XForms_2.0#evt-linkError),  
though something that was just a notification, not an error.

Something like:

"If traversal fails, an xforms-load-error should be dispatched, though  
this may not be possible if the error is discovered after traversal.
Otherwise, processing of the resource reached by traversing the link  
depends on the obtained context: ..."

It's also worth noting that with a target="_blank" on the load, XForms  
processing still continues in the original context, so there is code  
remaining that could check even in that case.

Steven


On Tue, 31 Oct 2017 17:08:48 +0100, Erik Bruchez <ebruchez@orbeon.com>  
wrote:

> It depends on how browsers do it. In this fairly old SO question [1],  
> somebody says:
>
>> Not really possible, because when window.location = someURL is  
>> executed, before the URL is even tested, your document is removed from  
>> the window. You have no code remaining >that could test if it worked.
>> If the link is on the same origin, you may issue an XMLHttpRequest to  
>> test if the page is reachable but there doesn't seem to be a way to  
>> test if a page isn't requestable >just due to cross origin request or  
>> because the URL is wrong.
>> For a general document, I don't know any way to test if a foreign  
>> origin page is reachable (but it can be done for an image using the  
>> onload event handler).
>
> If it is indeed true that in the case of an external, not same-origin  
> URL the document is unloaded before the error is known, then there will  
> be at least some situations where >nothing can be done. In some other  
> cases, like navigation within the same app or when accessing same-origin  
> documents, then more could be done.
>
> -Erik
>
> [1]  
> https://stackoverflow.com/questions/18404148/how-do-i-detect-if-window-location-failed
>
> On Tue, Oct 31, 2017 at 7:28 AM, Steven Pemberton  
> <steven.pemberton@cwi.nl> wrote:
>> "The link indicated by the URI is traversed. If traversal fails, then  
>> an implementation-specific means of conveying the link traversal  
>> failure occurs."
>>
>> https://www.w3.org/community/xformsusers/wiki/XForms_2.0#The_load_Element
>>
>> We may have discussed this before, but I've just hit it.
>>
>> Is there really nothing better that we can do than this?
>>
>> Clicking on a 'link' just does nothing. It would be really nice to have  
>> something like xforms-submit-error that at least tells you what's  
>> wrong...
>>
>> Steven
Received on Wednesday, 1 November 2017 10:38:08 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 19:37:48 UTC