如何在不重新加载当前页面的情况下加载URL?

时间:2012-07-22 14:39:45

标签: javascript jquery ajax

我在互联网上看到了一些像这样的工作:

<a href="./someplace.html"> Link </a>

通常会打开链接或者JS不活动:

http://www.domain.com/someplace.html

但是当JS处于活动状态时,它会像这样打开并将外部页面加载到同一页面而不刷新页面:

http://www.domain.com/#/someplace.html

怎么可能?有人可以帮忙吗?

我首先试图谷歌,也搜索这个网站,但没有找到一个好的答案。

3 个答案:

答案 0 :(得分:3)

$("a").click(function() {
    var $this = $(this),
        href = $this.attr("href");

    $(document.body).load(href);

    location.href = "#" + href;
});

有关详细信息,请参阅jQuery.fn.load

答案 1 :(得分:1)

您在问题中提供的示例与哈希相关。

哈希是当前文档内部的超链接引用。

当您看到使用file.html#name_of_smth的链接时,该页面中的锚点可能类似于<a name='name_of_smth'>blah</a>

这不一定是JavaScript的东西,如果您使用散列和名称(如示例here)构造锚点,则可以使用它。

如果您想通过JavaScript使用它,您需要做的就是修改window.location.hash

FaceBook和其他网站现在采用的方式是更好。他们使用AJAX将数据重新加载到页面中(如此处的其他答案所示),并使用window.history.pushState()作为示例here来通知浏览器新数据属于不同的URL。这会更改地址栏中的URL而不重新加载,并允许正确的书签和重新加载/刷新。

答案 2 :(得分:0)

您可以通过AJAX请求新页面来执行此操作,然后将内容插入当前页面。

this question中写了更多有关此内容的详细信息。