是否可以onclick =“history.clear();”

时间:2013-02-17 11:55:36

标签: javascript cordova logout

我将在我的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 个答案:

答案 0 :(得分:14)

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

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

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

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


clear对象没有history方法。

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

浏览器历史记录属于用户,您无法从中删除任何内容。

答案 1 :(得分:6)

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

尝试window.location.replace(url);

重定向后无法进入上一页。

答案 2 :(得分: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:属性onclick。您只使用期望URI的伪协议(例如,锚的href)。 onXYZ属性的内容始终是代码,而不是URI。

最后:除非您正在使用样式进行操作,否则这些链接都很难点击,空的是什么。 : - )

答案 3 :(得分:0)

使用:navigator.app.clearHistory();