2

我正在使用 Google chrome,并且我已经使用 Dive into HMTL 5 中提到的一种检测技术进行了测试,以支持 History API。但是下面的代码似乎不起作用。谁能让我知道我错过了什么?

function demo()
 {
  alert("history changing");
if(window.history && history.pushState)
{
    alert("api supported");
}
else
    alert("api not supported");
for(i=0;i<20;i++)
{
    history.pushState(null,null,"\try.html");
}
}

for 循环,其中我希望 url “try.html”在浏览器的历史记录中插入 20 次,似乎不起作用。我从一个名为“try.html”的页面调用此函数,其中函数“demo”在页面加载时执行。页面“try.html”只有一行普通文本。我想要做的是,当用户在加载页面“try.html”后单击浏览器的后退按钮时,他仍将留在同一页面上,因为历史记录应该包含 20 个条目同一页面,即“try.html”,但事实并非如此。为什么?

4

1 回答 1

1

这个对我有用。您可能会遇到两个问题:

  1. 如果您尝试从file://URI 运行您的函数,那么您将收到一个安全错误。Chrome 对此保持沉默,但 Firefox 会报告该错误。您需要将页面放在 Web 服务器上并通过http://.
  2. 该字符串"\try.html"表示一个制表符,后面跟着一个ry.html,您可能的意思是"/try.html"

这是一个基于您的代码的工作示例。

于 2012-04-09T10:54:09.110 回答