2

更新:

事实证明,Twitter 不知道来自 URL 片段段的单个推文 ID。它的作用是在内联 JavaScript 中包含“上次查看的推特的最新推文”。如果您查看某人的个人资料,然后转到他/她的最后一条推文单页。内联 JavaScript 包含作者最后一条推文的文本。


原始问题:

每条推文都有一个 URL,例如http://twitter.com/#!/DeliciousHot/status/23189589820702720。推文标识 (/DeliciousHot/status/23189589820702720) 位于实际上并未发送到服务器的 URL 片段段中。

最初,我认为它是这样工作的:URL 响应没有此推文特定信息。它是从当前浏览器 URL 中提取推文 ID 并使用 AJAX 获取推文有效负载的 JavaScript 模块。然后使用推文有效负载更新页面内容。

令我惊讶的是,它不是这样工作的!

使用 Firebug,您可以查看http://twitter.com/#!/DeliciousHot/status/23189589820702720的响应,其中包含内联 JavaScript 中的推文有效负载“真正绅士的 10 个迹象”文本。另一个 AJAX 未获取推文有效负载。

那么,即使它在 URL 片段中,Twitter 服务器如何知道预期的推文 ID 呢?

4

2 回答 2

1

它是通过 JavaScript 实现的。JavaScript 正在扫描 URL 片段的位置并重定向页面。这是在 twitter.com URL 中执行此操作的行:

(function(g){var a=location.href.split("#!")[1];if(a){window.location.hash = "";g.location.pathname = g.HBR = a.replace(/^([^/])/,"/$1");}})(window);
于 2011-01-07T03:05:25.937 回答
1

两种方法:

  1. 当您未登录时,它有一个重定向:

    (function(g){var a=location.href.split("#!")[1];if(a){window.location.hash =
      "";g.location.pathname = g.HBR = a.replace(/^([^/])/,"/$1");}})(window);
    
  2. 当您登录时,它会调用 api.twitter.com:

    http://api.twitter.com/1/statuses/show.json?include_entities=true&contributor_details=true&id=23189589820702720
    

我不知道这发生在代码中的哪个位置,但开发人员工具记录了它。

于 2011-01-07T03:38:04.477 回答