我的设计师认为在不同页面之间创建转换是个好主意。基本上只有内容部分会重新加载(页眉和页脚保持不变),只有内容div应该具有过渡效果(淡入淡出或某种排序)。要创建这种效果并不是真正的问题,让谷歌(分析)开心就是......
我不喜欢的解决方案和原因;
我想到了一个可能的解决方案: 当访问者单击链接时,捕获事件,使用ajax加载目标,同时显示过渡效果,然后使用ajax请求获取的内容重写整个文档。
至少这将起作用并具有一些优势;网页重新加载将看起来无缝,无论您的互联网连接速度有多慢,谷歌都不会介意,因为ajax内容本身就是一个完整的HTML页面,并且可以按原样进行抓取,即使是非JavaScript浏览器(手机等等) 。)不介意,他们只是重新加载页面。
我对实现此方法的犹豫是我会使用ajax重新加载整个页面。我想知道这是否是ajax的意图,如果它会减慢速度。最重要的是,是否有更好的解决方案,例如。我的第一个“坏”解决方案,但略有不同,所以谷歌会喜欢它(分析也是如此)?
感谢您对此的看法!
答案 0 :(得分:10)
简短回答:我不建议以这种方式加载整个页面。
答案很长:不推荐。虽然可能,但这并不是XHR / Ajax的真正意图。基本上你正在做的是复制浏览器的本机行为。您将遇到的一些问题:
对于页面过渡效果是否值得你的电话,但我希望我已经回答了你的问题。
答案 1 :(得分:3)
你可以拥有AJAX 和 SEO:Google's proposal。
我认为您可以从Gmail的设计中学到一些东西。
答案 2 :(得分:2)
这可能有点奇怪,但我对此有所了解。
使用'ifarme'GET参数准备页面加载。
您的目标是确保在“预加载器”中使用额外的“iframe”get参数打开每个链接,并在iframe加载完成后调用show_iframe_content(),将内容复制到你的父页面。
像这样:链接点击 - >转换到加载阶段 - > iframe已加载 - > show_iframe_content()调用 - >将iframe内容复制回父级 - >过渡到正常阶段
整件事情很好,因为如果抓取工具访问您的网页,它会在没有'iframe'get参数的情况下执行,因此它可以像平常一样浏览所有网页,但是当您在浏览器中使用它时,你让你的链接做上面的魔术。
这只是它的草图,但我确信它可以做得对。
编辑:实际上你可以用简单的ajax来做,没有iframe,你必须在浏览器中加载后修改页面,用ajax加载链接的内容。抓取工具也应该看到链接。
示例脚本:
$.fn.initLinks = function() {
$("a",this).click(function() {
var url = $(this).attr("href");
// transition to loading phase ...
// Ajax post parameter tells the site lo load only the content without header/footer
$.post(href,"ajax=1",function(data) {
$("#content").html(data).initLinks();
// transition to normal phase ...
});
return false;
});
};
$(function() {
$("body").initLinks();
});
答案 3 :(得分:2)
Google分析可以跟踪javascript事件,就好像它们是网页浏览一样 - 请点击此处查看实施情况:
http://www.google.com/support/googleanalytics/bin/answer.py?hl=en-GB&answer=55521