2013-03-14 68 views
0

我知道如何将HTML写入到window.open()的新窗口,但这会导致新的窗口。需要一种方法来做window.location.href(dynamicHTMLstring)

我想我的HTML输出字符串被写入当前窗口。效果就像点击一个链接。目的是确保我有浏览器历史记录。

当我参考使用window.location.href()的URL时,我无法写入内容,因为href属性必须是URL。

有没有办法将两者结合起来,并获得一个新的页面加载到浏览器历史记录中,使用字符串值而不是文件?不允许服务器端参与。

+1

你想要一个新的窗口,添加到浏览器的历史?所以当他们点击后退按钮时,这个新窗口会去哪里? – 2013-03-14 01:49:02

+0

更简单的使用脚本修改当前页面中的视图并使用散列来路由视图 – charlietfl 2013-03-14 01:56:18

+0

我仍然不确定你在找什么。使用'window.open()'在新窗口中加载页面alredy在用户浏览历史中包含页面。如果您只是想要替换页面上的内容,那么您可以使用javascript替换文档元素的内容,然后使用我在答案中提到的History API向浏览器历史记录中添加条目,以使其显示用户已访问过不同的页面。 – BinaryTox1n 2013-03-14 19:08:03

回答

2

HTML5带来了JavaScript的新历史API。这使您可以使用JS将事物推送到浏览器历史记录。有了这个,你可能能够完成你正在寻找的东西。如果这没有什么帮助,请澄清你的问题,因为有点难以分辨你的要求。

编辑:
我认为这是你在找什么。看看this example。当您点击诸如“蓬松”之类的链接时,该网站实际上只是替换了网站正文的文本,并向浏览器的历史记录添加了一个条目,以显示用户实际上转到了其他页面。实际上,浏览器从来没有提出过另一个请求,也没有打开另一个页面,并且这只是一种JavaScript技巧。

释演示环节,我送你,有很多的好消息:
http://html5doctor.com/history-api/

中的jsfiddle演示:

我做什么,我讲的小规模示威here in a jsFiddle。 如果你看,你会看到一个链接。如果要右键单击并查看包含内容的小方块的来源,则会看到您正在查看页面的来源“http://jsfiddle.net/ByZpW/4/”。

点击链接。

现在您将在链接中看到新内容和新文本。如果您要再次查看该小方块的来源,则会看到您正在查看页面的来源“http://fiddle.jshell.net/lolnewpageonjsfiddledomain/”。

很明显,jsFiddle没有让我给他们的域添加一个新页面,那么发生了什么?我告诉JavaScript,我去了别的地方,它相信我。现在,如果你点击内容广场并点击退格,你会看到你被带回“第一页”。如果您查看来源,则会确认您已返回原始位置。当然这是一个很大的谎言。我们没有去任何地方,一切都是用JavaScript来看待的。

,请注意行:

// History magic here 
history.pushState({link: link, content: content}, "test", $(this).attr("href")); 

这就是我们用JS说:“假装我去别的地方,尽管我还在这里。”

+0

谢谢 - 我在编辑我的问题。 – tim 2013-03-14 18:56:04

+1

@tim我更新了我的答案,以更清楚地解释我认为你在找什么。 – BinaryTox1n 2013-03-14 19:14:03

+1

@tim我添加了另一个互动示例来向你展示我的意思。 – BinaryTox1n 2013-03-14 19:48:47

相关问题