2010-09-30 111 views
0

新页面目前我有一个基本的jQuery库:通过与动画图像图片廊每张幻灯片

<ul> 
    <li>IMAGE</li> 
    <li>IMAGE</li> 
</ul> 
// with NAV stuff 

我周期,一切都很正常。

但是,我的客户“需要”另一个设置,每个幻灯片将会有一个新的页面。 GQ.com就是一个很好的例子。点击链接查看。

如果您会注意到,每次点击“上一页”或“下一页”时,都会加载一个新页面,为该网站创建更多综合浏览量。

我的问题: 是否有可能与我目前的设置(B/C它不能改变)?还是只有通过服务器端编程才有可能?他们如何做到这一点?

回答

1

看看实际发生了什么。 “下一步”按钮的URL如下所示:

<a href="?slide=2" title="Next slide" onclick="s_objectID=&quot;http://www.gq.com/style/wear-it-now/201010/best-jean-jackets-denim?slide=2_1&quot;;return this.s_oc?this.s_oc(e):true">Next</a> 

但是,当您点击它时,它会将您带到哪里?你在这里:

http://www.gq.com/style/wear-it-now/201010/best-jean-jackets-denim#slide=2

注意区别?这是一个散列#而不是问号?。他们不会重新加载整个页面,他们会在Javascript中异步发出HTTP请求,并使用某种形式的hijax来更改浏览器的哈希值(该哈希值出现在#... javascript唯一可以更改的部分之后),从而允许用户使用常规浏览器控件向后和向前循环。做到这一点的方法是在javascript中构建方法来检测页面加载和页面哈希值发生更改后的散列值。然后,您可以使用另一个JavaScript函数实际控制当您单击“下一个”或“上一个”按钮时更改它,并返回false以终止正常的锚href执行。

这个被称为“hijax”的原因是因为你的网站仍然有完全有效的hrefs(例如,你可以去上面的链接,但用?取代#并获得完全相同的应用程序状态)。这使得搜索引擎能够在没有JavaScript的情况下抓取您的网站和用户,从而有效地使用您的网站,同时还提供了人们在全功能浏览器中所期望的所有AJAXery。这里的技巧是确保#之后的内容可以通过AJAX传递给你的服务器,让服务器明白它是一个AJAX调用,并处理你的javascript可以理解的返回值。最简单的方法是使用#之后的额外位作为您的AJAX请求的URL,并让服务器正确解释所有内容。

+0

真棒,纯粹真棒!我注意到#和?变化,但不知道如何以及为什么。非常感谢。但是,我是否正确地表示他们在每张新幻灯片中获得有效的新页面请求(注意每次都会更改广告)? – Booski 2010-09-30 19:16:23

+0

哦,这是我的当前设置可能吗? – Booski 2010-09-30 19:21:21

+0

从浏览器的POV来看,它仅仅是一个“新”页面,因为它代表了浏览器历史中的新点。然而,“换页”似乎只是一种幻想。看起来他们正在通过javascript为每个新的“页面”请求加载新广告,这有点愚蠢,但它是通过AJAXy网站获利的一种方式。不要让所有的闪光灯都欺骗你,尽管......这只是一种做AJAX的奇特方式。国际海事组织,使用这种hijax方法是开发一个网站(现在)的最佳方式。你如何完成的具体细节取决于你。 – treeface 2010-09-30 19:23:02