【问题标题】:Search engine behavior for asynchronous loaded HTML异步加载的 HTML 的搜索引擎行为
【发布时间】:2014-04-25 09:50:36
【问题描述】:

对于一个项目,我需要使用 XMLHttpRequest 或 jQuery 异步加载 HTML 内容。

具体来说,我发出请求并将 HTML 响应加载到 div 容器中。

(这只是一些示例代码:)

<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc()
{
    var xmlhttp;
    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==4 && xmlhttp.status==200)
        {
            document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
        }
    } 
    xmlhttp.open("GET","testFile.php",true);
    xmlhttp.send();
}

</script>
</head>
<body onLoad="loadXMLDoc()">

<div id="myDiv" style=""></div>

</body>
</html>

现在的问题是: Afaik 搜索引擎看不到 #myDiv 中的内容,对吗?我有哪些机会可以抓取此内容?

附录:请求也可能是跨域的!

【问题讨论】:

  • 抱歉询问,确实搜索引擎会失败,但不仅是它们,而是禁用 JavaScript 的浏览器;屏幕阅读器;索引质量.. 等等。为什么你需要加载这个客户端?
  • 感谢您的提示,但我知道所有这些事情。对于这个项目,这是要求。
  • 正如 Evgeniy 正确建议的那样,谷歌“寻找” "Hashbangs" (#!) 所以它可能是 www.example.com/xml#!file=test,您可以在之后使用 file hash 决定要获取哪个 XML;谷歌将为此收集该 URL 的 HTML 快照。其次,如果你想要跨域,它必须是 JSONP,尽管这显然只有在域期待你的调用时才有效。

标签: javascript jquery html web-crawler googlebot


【解决方案1】:

谷歌问题!

据我所知,Ajax Crawling 可以帮助您。但在服务器和客户端需要认真更新。

【讨论】:

    【解决方案2】:

    @Evgeniy 的回答是搜索引擎不适合做的事情的最佳解决方案,即拖网动态页面。

    您应该与您的利益相关者澄清内容实际上是需要动态加载,还是只需要动态显示/隐藏。如果是后者,那么您可以在原始标记中包含所有内容,然后使用 css display:none 或 jQuery toggle 显示/隐藏(同样的事情)。如果您的内容像照片或视频这样的带宽很重,这可能是不行的,但如果它只是文本,那么文本很便宜。预加载和显示/隐藏将使搜索引擎拖网内容并为您省去一大堆麻烦。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      • 2016-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-02
      相关资源
      最近更新 更多