我将在我的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中的注销事件,我会遵循它。感谢
答案 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();