如何在不更改页面URL的情况下使用Javascript转发?

时间:2012-11-01 07:19:00

标签: javascript html

我有一个主页,我想导航到其他页面,比如博客或图库,但没有地址栏中的URL进行更改。我知道它可以在服务器端,但在Javascript中怎么办?

这是我的HTML / JS代码:

//HTML
<ul>
  <li><a onclick="openPage('contact.html')">Contact Us</a></li>
  <li><a onclick="openPage('blog.html')">Blog</a></li>
  <li><a onclick="openPage('gallery.html')">Gallery</a></li>
</ul>

//Javascript
function openPage(url){
     //   All these will forward but will change the URL
     //window.open(url);
     //window.location.href=url;
     //self.location=url;
     //window.location.replace(url);
}

最初,网址为http://something.com/mainpage.html

即使导航到任何页面也应该保持不变。

这是我所拥有的一个非常简单的例子。那么,在客户端没有服务器是否可能?如果没有,那么在服务器端最简单的方法是什么?假设我正在使用Java / JSF。

2 个答案:

答案 0 :(得分:2)

如果您想阻止重新加载页面,则必须添加哈希#

css-tricks.com有一个很棒的截屏视频,请看:

Best Practices with Dynamic Content

请在stackoverflow changing-the-url-without-reloading-the-page

中查看此问题

答案 1 :(得分:0)

我会给你一个提示。然后,您可以自己编写代码。

使用ajax,获取要打开的整个页面。 (我假设他们在同一台服务器上。)

然后解析html.responsetext&amp;找到获取页面的body.innerHTML 然后使用document.body.innerHTML = fetched_body_innerHTML;
也以类似的方式更改document.title。

我假设两个页面都有相同的CSS(为了看起来一致),很可能,加载了相同的js文件。

如果您在2页上有不同的CSS&amp; /或js文件集,则需要创建其他节点&amp;删除旧脚本/链接节点。 (但是,结果不一样,因为旧的JS已经加载了,并且在更改了body的innerHTML之后不会触发body.onload。