2013-05-31 90 views
2

我有一個帶有標題導航的webform。如何使谷歌抓取工具生成JavaScript可生成HTML索引?

要生成此標題導航,我做一個AJAX呼叫到的Java類,並得到一個JSON字符串作爲響應。

I解析字符串並在jQuery中創建HTML。下面是一個例子:

$(document).ready(function(){ 
     $.ajax({ 
      url: '/test/newHeaderJSON', 
      dataType: 'json', 
      type: 'GET', 
      success: function(data, textStatus, jqXHR) { 
       $('ul.main-menu').append('<a href="'+ obj.header.headerItems.productMenu.link +'">' + obj.header.headerItems.productMenu.name + '</a>'); 
      } 
     }); 
    }); 

上面的例子顯示了通過jQuery添加到頁面的錨標記。

現在出現這個問題。此錨點在頁面源中不可見,因此無法抓取。

我想讓這個組件可以抓取。

我已閱讀關於_escape_fragment_的內容,但無論我在網上能找到什麼,我都無法理解它。

有人能告訴我如何以更容易理解的方式使用這種方法嗎?

下面是我使用jsp struts2迭代器的替代方法。即使在這種方法中,我也沒有得到源代碼的價值。該代碼適用於DOM,但不適用於源代碼。

<html> 
    <head> 
     <script type="text/javascript"> 
      $.get('test/newHeader'); 
     </script> 
    </head> 
    <body> 
     <s:iterator value="%{menuOptions.get('Home_Improvement').productgroup}" var="productGroupVar"> 
      <a href="<test:sRelativeUrl url='/${productGroupVar.groupId}'/>">${productGroupVar.name}</a> 
     </s:iterator> 
    </body> 
</html> 
+1

是否有任何真正的需要通過JavaScript生成鏈接?如果你想讓你的html「可抓取」,我強烈建議在服務器端生成輸出,而不是試圖破解這些東西。 –

+0

鏈接的內容來自內容系統。我們在任何時候都不知道,會有多少鏈接。它可以隨時根據業務需求進行更改。所以我們不能在HTML上添加錨定標記,因爲我們不知道會有多少個錨定標記。第二種方法可以是在後端生成HTML,這絕不是推薦的方式。 –

+2

您可能想要閱讀這篇文章:[製作Ajax應用程序可抓取](https://developers.google.com/webmasters/ajax-crawling/)。 – jfriend00

回答

0

這種定位的是沒有看到在頁面的源代碼,因此無法抓取的,能。

Google能夠抓取從Javascript生成的頁面。因此,你的陳述是不正確的。因此,如果這個/那些頁面的URL在sitemap.xml中可用,那就沒有問題了。