Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 需要一种方法来执行window.location.href(dynamicHTMLstring)_Javascript_Jquery_Browser History - Fatal编程技术网

Javascript 需要一种方法来执行window.location.href(dynamicHTMLstring)

Javascript 需要一种方法来执行window.location.href(dynamicHTMLstring),javascript,jquery,browser-history,Javascript,Jquery,Browser History,我知道如何使用window.open()将HTML写入新窗口,但这当然会导致出现新窗口 我希望将HTML输出字符串写入当前窗口。效果就像点击一个链接。目的是确保我有浏览器历史记录 当我使用window.location.href()引用URL时,我无法写入内容,因为href属性必须是URL 有没有一种方法可以将两者结合起来,并将一个新页面加载到浏览器历史记录中,该页面使用HTML的字符串值而不是文件?不允许服务器端参与。HTML5带来了一个新的JavaScript历史API。这允许您使用JS将内

我知道如何使用
window.open()
将HTML写入新窗口,但这当然会导致出现新窗口

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

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


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

HTML5带来了一个新的JavaScript历史API。这允许您使用JS将内容推送到浏览器历史记录中。有了这个,你也许能够完成你所寻找的。如果这不太有帮助,请澄清你的问题,因为很难说出你的要求

编辑:
我想这就是你要找的。看一看。当您单击诸如“fluffy”之类的链接时,网站实际上只是替换网站正文的文本,并向浏览器的历史记录中添加一个条目,以显示用户实际访问了不同的页面。实际上,浏览器从来没有发出过另一个请求,也从来没有打开过另一个页面,而让它看起来像是javascript的诡计

解释我发送给您的演示链接,以及许多好信息:

JSFIDLE中的演示:

我已经对我所说的做了一个小小的示范。 如果你看,你会看到一个链接。如果您右键单击并查看包含内容的小正方形的来源,您将看到您正在查看页面“”的来源

点击链接

现在,您将在链接上看到新内容和新文本。如果你再次查看那个小正方形的来源,你会看到你正在查看页面“”的来源

显然,JSFIDLE不允许我向他们的域中添加新页面,所以发生了什么?我告诉javascript我去了其他地方,它相信了我。现在,如果你点击内容栏并点击backspace,你会看到你被带回“第一页”。如果查看源代码,您将确认您已回到原始位置。当然,这都是一个巨大的谎言。我们没有去任何地方,一切都是用JavaScript设计的

注意线路:

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

这就是我们使用JS说“假装我去了其他地方,即使我还在这里。”

你想要一个新窗口,添加到浏览器历史记录中吗?所以,当他们点击后退按钮时,这个新窗口将转到哪里?使用脚本修改当前页面中的视图和使用哈希路由视图更简单。我仍然不确定您在寻找什么。使用
window.open()
在新窗口中加载页面时,该页面将包含在用户浏览历史记录中。如果您只是想替换页面上的内容,那么可以使用javascript替换文档元素的内容,然后使用我在回答中提到的历史API向浏览器历史添加一个条目,使其看起来用户访问了不同的页面。@tim我更新了我的回答,以便更清楚地解释我认为您在寻找什么。@tim我添加了另一个交互示例,向您展示我的意思。