Oddly enough, the following change to HistoryImplStandard.newItem() fixes
the problem.
private native void nativeUpdate(String historyToken) /*-{
$wnd.location = $wnd.location.href.split('#')[0] + '#' +
[EMAIL PROTECTED]::encodeFragment
(Ljava/lang/String;)(historyToken);
}-*/;
Basically all it does is ensure that there's always at least a '#' at the
end of the url when setting it. It's kind of an ugly hack, but we might have
to live with it. In a real patch, I would isolate this in HistoryImplSafari
with better commentary.
Has anyone been able to reproduce issue 2909 yet? I'm trying to see if it's
related, but have been unable to reproduce it so far.
Thanks,
joel.
On Tue, Sep 23, 2008 at 5:20 PM, Joel Webber <[EMAIL PROTECTED]> wrote:
> Wow, that's about the freakiest thing I've seen in a while. The fact that
> the following code fails is really disturbing:
>
> private static boolean isBorked() {
>
> Element e = DOM.createDiv();
>
> e.setInnerHTML("spoo");
>
> return e.getInnerHTML().length() == 0;
>
> }
>
>
> I also tried taking the History.newItem() calls out of onModuleLoad() and
> performing them in response to a button click (just in case it was in a
> weird state during module init), but it still does the same thing.
>
> This might be related to issue 2909 as well. I'm working on figuring out
> what's going on here, so if anyone has any ideas please speak up!
> (can you tell that I really want these History issues to go away once and
> for all?)
>
> Cheers,
> joel.
>
> On Mon, Sep 22, 2008 at 12:56 PM, Sam Gross <[EMAIL PROTECTED]> wrote:
>
>> By immediate history processing, I mean the changes in r3234 that include
>> synchronous calls to onHistoryChanged (in addition to the timer-based
>> processing).
>> Removing the synchronous calls for empty tokens works around the Safari
>> bug.
>>
>> I filed issue 2905 to track this bug.
>>
>> On Mon, Sep 22, 2008 at 4:24 AM, Thomas Broyer <[EMAIL PROTECTED]>wrote:
>>
>>> On 21 sep, 23:46, "Sam Gross" <[EMAIL PROTECTED]> wrote:
>>> > Has anyone else noticed weird behavior with Safari 3 and empty history
>>> > tokens? Setting the innerHTML during the invocation of the history
>>> listener
>>> > for empty tokens does not seem to have any effect.
>>>
>>> Seems a bit weirder actually: using the "previous" button, go back to
>>> #x then forward (back to the enmpty token) and it'll show "History
>>> OK".
>>
>>
>> Yes - those invocations of the history listeners are due to the history
>> timer - not synchronous calls in HistoryImpl#newItem.
>>
>>
>>>
>>> And it's working OK in Chrome (0.2.149.30).
>>>
>>> > I think the problem has to do with the immediate history processing.
>>>
>>> Probably. Though, the "immediate processing" isn't precisely
>>> documented, so i'd say you shouldn't rely on it ;-)
>>
>>
>> I'm not relying on immediate processing. This bug is triggered by
>> immediate history processing.
>>
>>
>>> > I put a repro case at:http://web.mit.edu/sgross/www/history/Hello.html
>>>
>>>
>>> >>>
>>>
>
--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---