2011-09-10 40 views
1

我正在做一個Ajax網站,我必須添加到所有網址「#!」當訪問者點擊該網址時,我的網站(不適用於外部網址)。 當有人點擊一個鏈接http://mysiteajax.com/contact/例如「腳本的URL改變這樣的:」 http://mysiteajax.com/#!/contact /「如何添加「#!」之前的所有網址爲ajax

我已經編寫了一個小腳本的jQuery,但它不工作:

<script> 
     var base_url = "http://localhost/ajaxsite/"; 
     function link(href) { 

     // Check if the URL is an internal url 
     if(href.indexOf(base_url) !=-1 || href.indexOf('http://') == -1 || href.indexOf('https://') == -1) { 
     href = href.replace(base_url,''); 
     return base_url + '#!/' + href; 
     } 
     } 

     // Changes the link when someone clicks 
     $(document).ready(function() { 
     $('a').click(function() { 
     $('a').attr('href', link(this)); 
     }); 
     }); 
     </script> 

你能幫我

謝謝

+2

*「它不起作用」*:** **如何不起作用?會發生什麼,你期望發生什麼? –

+0

爲什麼#!? #是一個片段標記,因此您的請求不會轉到指定的路徑... – tjameson

+1

@tjamson:[AJAX爬行:網站管理員和開發人員指南](https://www.google.com/support/webmasters/bin /answer.py?answer=174992)。我假設他讀取片段標識符的值並向該路徑發出請求(就像其他許多網頁一樣:))。 –

回答

2

這裏有一些問題,我看到:

  • 有一個在代碼片段
  • 你傳入錨標記元素來鏈接(沒有AJAX),沒有一個href
  • 這將對網頁爬蟲沒有影響,因爲爬蟲不執行JS
  • #和東西后也不會被傳遞到你的服務器

如果我假設你對Ajax的地方,那麼這將仍然沒有理由2和3(假設你的Ajax請求應作出努力根)

更改此:

$('a').attr('href', link(this)); 

這樣:

$(this).attr('href', link($(this).attr('href'))); 

這是一個有點亂,但它僅僅只使用jQuery的ISMS改變點擊的元素的唯一途徑。

我看不出有任何理由這樣做。如果你正在尋找this,我不認爲谷歌的網絡爬蟲解釋JS(這將在他們抓取的規模上花費太長時間)。你需要把它放在HTML本身中。

+0

是的我有另一個腳本用Ajax調用頁面。 現在的代碼工作正常,但當我點擊幾次鏈接,並在地址欄中倍增,你有一個想法如何解決這個問題。 – user938609

+0

呃,只調用一次?我只是在頁面加載而不是點擊時調用它。 – tjameson

相關問題