【发布时间】:2012-04-09 05:51:46
【问题描述】:
我正在使用 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 循环,我希望在浏览器的历史记录中插入 20 次 url “try.html”,但似乎不起作用。我从一个名为“try.html”的页面调用此函数,其中函数“demo”在页面加载时执行。页面“try.html”只有一行普通文本。我想要做的是,当用户在加载页面“try.html”后单击浏览器的后退按钮时,他仍将留在同一页面上,因为历史记录应该包含 20 个条目同一页面,即“try.html”,但事实并非如此。为什么?
【问题讨论】:
-
想告诉我们该代码的哪一部分不起作用?不要说“它不起作用”,而是试着告诉我们输出是什么以及预期的输出是什么。谢谢。
-
哦,对不起。所以它是这样的。 for 循环,其中我希望 url “try.html”在浏览器的历史记录中插入 20 次,似乎不起作用。我从一个名为“try.html”的页面调用此函数,其中函数“demo”在页面加载时执行。页面“try.html”只有一行普通文本。我想要做的是,当用户在加载页面“try.html”后单击浏览器的后退按钮时,他仍将留在同一页面上,因为历史记录应该包含 20 个条目同一页面,即“try.html”。
-
可能与您的 stateObj 为空有关。
-
但是必须要有 stateObj 吗?
-
我不知道。 Mozilla Documentation 并没有真正解决空值问题。也许您应该尝试使用一些虚拟数据来排除这种情况。
标签: html html5-history