实现像用户流程界面的推特?

时间:2012-05-17 06:57:25

标签: php javascript twitter

我希望像用户流界面一样实现Twitter,即当用户访问时 http://twitter.com/#!/abc页面已加载。 我试图在:

实现这一点
http://forum.abhibhatia.co.cc/ajax/

我尝试做的是,只要页面加载,网址就会被“#!/”拆分,并加载secon部分,以便http://forum.abhibhatia.co.cc/ajax/posts.php可以访问http://forum.abhibhatia.co.cc/ajax/#!/posts.php。我面临的问题是,在使用window.location重定向用户后页面没有更改 这是行不通的。我还没有尝试任何其他方式来重定向用户。 这是使用的javascript函数:

function geturl(){
    var url=window.location.toString();
    var a=url.split("#!/");
    if(a.length==1)
        a[1]='data.php';
    return a[1];
    }
function fetchPage(){
    var url=geturl();
    var xmlhttp;
    if (url.length==0&&m==1)
      { url='data.php';
      return;
      }
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==1) document.getElementById("data").innerHTML="Loading...";
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        var file=xmlhttp.responseText;//alert(file);
        var contents=file.split("<head>");//alert(contents[0]);
        var useable=contents[1].split("</head>");
        var head=useable[useable.length-2];//alert(head);
        var body=useable[useable.length-1].split("</body>");
        document.getElementById("data").innerHTML=body[0];
        document.head.innerHTML=document.head.innerHTML+head;
        //document.getElementById("data").innerHTML=xmlhttp.responseText;
        }
      }
    xmlhttp.open("GET",url,true);
    xmlhttp.send();
}
fetchPage();

1 个答案:

答案 0 :(得分:0)

仔细查看window.location对象,你可以使用window.location.hash,但正如之前提到的hashbangs有点陈旧我更倾向于使用标准哈希的html5状态管理#as后退。

进一步阅读:

https://developer.mozilla.org/en/DOM/window.location

http://www.adequatelygood.com/2010/7/Saner-HTML5-History-Management

如果你真的想要建立一个Twitter风格的界面,你应该把整个应用程序放在一个框架上,这个框架可以为你完成所有这些,比如backbone.js,这意味着你只需要使用REST / CRUD风格的数据source然后将为您实现所有状态managemet和hash回退。