You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "Clark Pan (JIRA)" <ji...@apache.org> on 2014/01/05 22:57:50 UTC

[jira] [Commented] (CB-5694) location.replace does not behave as expected

    [ https://issues.apache.org/jira/browse/CB-5694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13862668#comment-13862668 ] 

Clark Pan commented on CB-5694:
-------------------------------

The same code run on the default android browser behaves as expected. That being said, i have not tested a vanilla WebView.

To refute what was said about manipulating window.location.href, that is not the point of location.replace. Location.replace is used when you want to replace the last page on the history stack instead of pushing a new page onto the stack; using window.location.href will push another page onto the stack.

Providing a consistent implementation of this will remove a barrier for developing hybrid/web apps. Most popular frameworks that have routing (Backbone, Angular, you name it), uses this method.

> location.replace does not behave as expected
> --------------------------------------------
>
>                 Key: CB-5694
>                 URL: https://issues.apache.org/jira/browse/CB-5694
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Android
>    Affects Versions: 3.1.0, 3.2.0, 3.3.0
>         Environment: Tested on Android 4.1.2 Sony Xperia T
> Android 4.2.2 Samsung Galaxy S4
>            Reporter: Clark Pan
>            Assignee: Joe Bowser
>            Priority: Minor
>
> Using location.replace should replace the current page with the specified page. This is not the case when using hash values.
> Steps to reproduce:
> 1. Create new cordova project
> 2. Add android
> 3. Run code similar to this after device ready
> {code:javascript}
> window.location.hash = '#foo';
> expect(window.location.hash).toBe('#foo');
> window.location.replace('#bar');
> expect(window.location.hash).toBe('#bar');
> window.location.hash = '#foobar';
> expect(window.location.hash).toBe('#foobar');
> window.history.back();
> setTimeout(function(){
>     expect(window.location.hash).toBe('#bar');
> }, 0);
> {code}
> Expected results:
> All the expectations to be true
> Actual results:
> the last hash value will be '#foo'
> Workaround:
> One could shim location and history and provide their own implementation of history state.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)