hash with hashbang,preventDefault

时间:2015-12-31 09:29:22

标签: javascript html5 cordova

我正在开展一个cordova项目。我有一些有听众的链接,href被设置为"#"。

现在,在我的所有功能中,我提供事件并调用preventDefault()。

出于某种原因(在浏览器中访问应用程序时)。它仍然会导航到/#。 这导致浏览器打开一个新标签。

我之前使用了javascript:void(0),但它在windows phone(metro app)上抛出了错误列表。因为javascript:无效。

任何人都知道我应该如何解决这个问题? (我正在使用jQuery和简单的HTML5)。

e.g:

/**
* Toggle the menu
*/
toggleMenu: function(e) {

    if (e) {
        e.preventDefault();
    }

    App.Core.menuOpen ? App.Core.hideMenu() : App.Core.showMenu();
    return false;
},

所以我们这样绑定事件,所以当它被动态添加时,它仍然有用。

$(document).on("click", ".header-menu", App.Core.toggleMenu);

带有一些条带的HTML

<div class="page" data-init="App.Functions.Purchase.init()">

<div id="panel-purchase" class="panel" data-init="App.SomeModule.init()">
    <div class="panel-header">
        <div class="panel-header-inner">
            <a href="#" class="button header-menu"><span class="icon icon-menu"></span></a>
            <div class="panel-header-title"><span>Some Title</span></div>
            <span class="button dummy"></span>
        </div>
    </div>
...

1 个答案:

答案 0 :(得分:0)

只要我没有得到更好的解决方案,现在我没有使用href

它是HTML5的标准,尽管有些网站抱怨它可以针对自己。它适用于混合应用程序,在这种情况下我从未见过它以自身为目标。

更好的解决方案总是更好,源中必须有一些令人讨厌的东西(它最初由第三方创建)。