Language agnostic 如何制作一个看起来不';重新加载';

Language agnostic 如何制作一个看起来不';重新加载';,language-agnostic,Language Agnostic,我在看这个网站 我也看过其他类似的网站 该页面提供了许多过滤器,例如:价格范围、受欢迎程度等。但当执行这些过滤器时,似乎只加载了网页的某个部分,而不是整个页面。这似乎没有使用ajax,因为它将整个请求发送回服务器(search.php页面) 它似乎没有使用本页中提到的技术,他们只是编辑CSS以不显示某些链接 我很好奇这是怎么回事。有什么想法吗?它只是很快重新加载。整个页面上没有任何Javascript。HTML格式良好,页面非常简单。如果您想了解情况,请执行以下操作: 如果尚未使用firefox

我在看这个网站

我也看过其他类似的网站

该页面提供了许多过滤器,例如:价格范围、受欢迎程度等。但当执行这些过滤器时,似乎只加载了网页的某个部分,而不是整个页面。这似乎没有使用ajax,因为它将整个请求发送回服务器(search.php页面)

它似乎没有使用本页中提到的技术,他们只是编辑CSS以不显示某些链接


我很好奇这是怎么回事。有什么想法吗?

它只是很快重新加载。整个页面上没有任何Javascript。HTML格式良好,页面非常简单。

如果您想了解情况,请执行以下操作:

  • 如果尚未使用firefox,请安装它
  • 安装firebug扩展
  • 转到您感兴趣的网站,单击小firebug图标(在右下角的状态栏中,它是一个小bug),并为该网站启用所有firebug选项
  • 重新加载网页并单击“左右”
  • 看看不同的firebug面板。它将跟踪所有网络请求(XHR或其他),您可以四处窥探并查看

  • 它可能通过Ajax请求新数据,填充一个隐藏的
    元素,然后用隐藏的元素替换可见的

    它可能使用Javascript XMLhttprequest。Facebook和许多其他网站都使用这一功能。它在不重新加载整个页面的情况下访问服务器

    以下是w3schools.com上的一个示例:

    <script type="text/javascript">
    
    var xmlhttp;
    function loadXMLDoc(url)
    {
    xmlhttp=null;
    if (window.XMLHttpRequest)
      {// code for all new browsers
      xmlhttp=new XMLHttpRequest();
      }
    else if (window.ActiveXObject)
      {// code for IE5 and IE6
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    if (xmlhttp!=null)
      {
      xmlhttp.onreadystatechange=state_Change;
      xmlhttp.open("GET",url,true);
      xmlhttp.send(null);
      }
    else
      {
      alert("Your browser does not support XMLHTTP.");
      }
    }
    
    function state_Change()
    {
    if (xmlhttp.readyState==4)
      {// 4 = "loaded"
      if (xmlhttp.status==200)
        {// 200 = OK
        // ...our code here...
        }
      else
        {
        alert("Problem retrieving XML data");
        }
      }
    }
    </script>
    
    
    var-xmlhttp;
    函数loadXMLDoc(url)
    {
    xmlhttp=null;
    if(window.XMLHttpRequest)
    {//所有新浏览器的代码
    xmlhttp=新的XMLHttpRequest();
    }
    else if(window.ActiveXObject)
    {//IE5和IE6的代码
    xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
    }
    if(xmlhttp!=null)
    {
    onreadystatechange=状态变化;
    open(“GET”,url,true);
    xmlhttp.send(空);
    }
    其他的
    {
    警报(“您的浏览器不支持XMLHTTP。”);
    }
    }
    函数状态_Change()
    {
    if(xmlhttp.readyState==4)
    {//4=“已加载”
    if(xmlhttp.status==200)
    {//200=OK
    //…我们的代码在这里。。。
    }
    其他的
    {
    警报(“检索XML数据时出现问题”);
    }
    }
    }
    
    除了快速加载之外,浏览器优化和缓存可能还起到了作用。我让它看起来像是通过交替刷新页面和点击链接加载了几次页面


    刚在IE中试用过,每次点击我都能看到一个可见的重新加载。在Chrome中,它看起来没有任何刷新,我猜是因为浏览器优化。我知道在Chrome中,如果你在两个具有相同内容的选项卡之间切换,它甚至不会重新绘制任何内容。

    我在该页面上看不到任何不需要我登录的内容。对不起,我不知道你想用Bountii链接显示什么,我点击的所有内容都会重新加载一整页。我会被诅咒的。我认为页眉部分仍然没有重新加载好吧,你可以想你喜欢的任何东西,只要你不关心是否正确。整个页面将重新加载bit并没有发送任何XHR请求,所以我猜它正在进行一个完整的页面加载,如果你只看源代码,你可以清楚地看到情况并非如此。在这里进行猜测是没有意义的。他给出的例子可能不是这样,但这是一种通过重新加载整个页面来让页面重新加载部分的方法