12

我将在我的 PhoneGap 应用程序中实现注销按钮,它将用户返回到身份验证页面(清除字段)。对于按钮,我使用带有 onclick 事件的锚点:

<script type="text/javascript">
function doLogout() {
    var backlen = history.length;
    history.go(-backlen);
    window.location.replace("index.html");
}
</script>

<a data-role="none" href="#" onclick="doLogout"></a>

但它不起作用,即它只是将我返回到已填写文件的身份验证页面,似乎只是退了一步。我不确定history.clear(),因为谷歌搜索它什么也没给我:

<a data-role="none" href="index.html" onclick="javascript:history.clear();"></a>

谁能告诉我我的问题在哪里?如果有另一种解决方案来处理 PhoneGap 中的注销事件,我会遵循它。谢谢

4

4 回答 4

17

调用history.go将被忽略,因为您将比历史记录中的项目多退一步。该length属性具有包括当前项在内的项目数,因此如果历史记录中有四个项目,则只能返回三步。

要回到第一步,您将从长度中减去一个:

history.go(-(history.length - 1));

但是,如果您专门为该页面打开了一个新窗口,那只会将您带回您的起始页面。否则,它将带用户回到他使用该窗口访问的第一页。


对象没有clear方法history

参考:https ://developer.mozilla.org/en-US/docs/DOM/window.history

浏览器历史属于用户,您不能从中删除任何内容。

于 2013-02-17T12:18:49.050 回答
7

我从未开发过任何 PhoneGap,但在 Web 应用程序中,您可以使用下面的代码。

尝试window.location.replace(url);

重定向后没有办法去上一页。

于 2014-03-04T10:54:55.700 回答
1

如果使用onclick属性,引号中的内容是实际语句,而不仅仅是函数的名称。所以:

<a data-role="none" href="#" onclick="doLogout();"></a>
<!-- Note the (); ----------------------------^^^   -->

另请注意,由于您没有采取任何措施来阻止跟随链接的默认操作,因此浏览器将跟随href,这会将#您带到当前页面的顶部。您可以通过添加以下内容来防止这种情况(如果您愿意)return false;

<a data-role="none" href="#" onclick="doLogout(); return false;"></a>

我无法理解您问题的第二部分,但我会注意到您不需要或不需要第二个示例中的javascript:ononclick属性。您仅在需要 URI 的地方使用该伪协议(例如,href锚点的 )。属性的内容onXYZ始终是代码,而不是 URI。

最后:除非你在做一些样式,否则这两个链接都很难点击,什么是空的。:-)

于 2013-02-17T12:00:59.280 回答
-1

使用:navigator.app.clearHistory();

于 2018-10-22T15:49:19.783 回答