2009-05-26 18 views
3

我正在開發一個默認通過AJAX加載內容的項目。如果JavaScript未啓用,從服務器寫入內容

我希望它檢查用戶(或SE bot)是否禁用JS,如果是,則通過PHP靜態顯示內容。

有沒有辦法做到這一點?我不認爲noscript標籤會在這裏工作,因爲這個頁面對非JS用戶或機器人來說是空的。

也做一個重定向到一個不同的頁面它對我來說沒有任何意義,因爲原始頁面的鏈接不會被搜索引擎考慮到,並且將無法將該頁面編入索引,因爲它們將會重定向。

回答

2

unobtrusive JS怎麼樣?您可以將純HTML頁面設爲默認頁面,然後使用JS隱藏或用您喜歡的AJAX控件替換笨重的頁面。每個視圖最終只有一個頁面可以動態升級。 URL也可以安全傳遞。

4

當用戶沒有JavaScript時,沒有辦法自動切換到不同的頁面。

我要做的是將非JS版本顯示爲默認版本,但在每個頁面上都有一個重定向到AJAX版本的腳本,並設置一個cookie,以便所有頁面從此立即顯示AJAX版本。噢,如果出現任何問題,比如已經有cookie禁用JavaScript的用戶,最好在非AJAX版本的鏈接中保留一個noscript標籤。

+0

我同意在檢測到cookie後留下noscript標記。具有所有的意義。 我只是不想重定向,因爲我會重定向搜索引擎機器人,並且索引的頁面將是非js頁面。這讓我非常惱火,並且我將失去鏈接到ajax頁面的鏈接 – 2009-05-26 22:54:06

+0

AJAX頁面通常根本不會被索引,因此將非AJAX頁面編入索引正是您想要的內容 - 無論如何它們應該具有基本相同的內容。 – 2009-05-27 06:25:56

1

您可以使用<noscript> html標籤。

該標籤在所有主流瀏覽器中均受支持。這包括IE,Firefox,Opera,Chrome和Safari。

這是一個正常的例子:

<script type="text/javascript"> 
document.write("Hello World!") 
</script> 
<noscript>Your browser does not support JavaScript!</noscript> 

下面是一個使用<meta>重定向代​​碼將重定向不支持javascript(測試和工程)瀏覽器的變化:

<script type="text/javascript"> 
document.write("Hello World!") 
</script> 
<noscript>Please wait while you're being redirected to the no-script version... 
<META http-equiv="refresh" content="1;URL=http://yoursite/index.php?version=noscript"> 
</noscript> 
1

需要考慮的兩種方法如下:(CSS顯示或DOM節點刪除)

1)css:

考慮對JS有條件的各種節點的CSS顯示控件。

Onload,JavaScript可以將相關元素的顯示風格更改爲「none」。

  • 如果沒有JS,那麼頁面元素不會隱藏。

在您的onload初始化函數中,設置:elObj.style.display:none;

添加無腳本鏈接或通知,以便僅僅禁用JavaScript的用戶可以根據您告訴他們他們沒有看到的內容選擇是否啓用它。

OR

2)節點提取:

第二選項是有JavaScript的實際刪除冗餘節點的onload。

  • 機器人和非JS用戶將立即,非強制訪問頁面元素。
  • JS用戶將獲得您的腳本交付的貨物。

例如,您可能需要刪除一個granddaddy容器部門,該部門有一個已知的id,稱爲「nonjs」。

我用它來從內存中刪除他們的函數:(。XDOM標準化瀏覽器的差異該代碼使用XDOM.getElementById使用您喜歡的跨瀏覽器的功能來代替。)

XDOM.deleteNode = function(node) { 
    if (!node || typeof node != "object") {return;} 
    var trashcan = XDOM.getElementById('xdomtrashcan'); 
    if (!trashcan) { 
     trashcan = document.createElement('DIV'); 
      // quick and dirty property set: 
     trashcan.id = 'xdomtrashcan'; 
     trashcan.style.display = 'none'; 
     document.body.appendChild(trashcan); 
    } 
    trashcan.appendChild(node); 
    trashcan.innerHTML = ""; //empty the trash 
    }; 
0

如果您有一個「家」或其他用戶導航的其他頁面,您可以包含一些JavaScript來設置cookie。 當用戶選擇目標頁面時,您可以根據是否設置cookie來生成純HTML或AJAXy頁面。

這樣做的一個變化是發佈「着陸」頁面的URL地址,該頁面使用「onload」腳本設置(或未設置)cookie,並將HTML重定向到帶有數據的頁面。