2008-10-29 31 views
11

在ASP.NET Web控件的Render方法中,我需要根據客戶端瀏覽器上是啓用還是禁用JavaScript來更改Html的輸出,在ASP.NET中禁用JavaScript時檢測

有沒有人知道正確的咒語來解決這個問題?

回答

13

使用腳本來檢查是否啓用JavaScript的問題是,你只發現了這一點後,腳本無法運行。

一些解決方案嘗試相反 - 他們使用javascript來設置一個值,然後提供啓用Javascript的控件,如果稍後檢測到該值。但是,這種方式無法使用像Firefox一樣啓用Firefox的工具,如Firefox NoScript插件。

更健壯的解決方案是始終發送純HTML兼容的控件,然後讓JavaScript在頁面加載上運行以添加正確的事件處理程序/額外的DOM元素/ etc。

然而,我不知道這是如何適應ASP.NET的方法需要控制。

+0

我認爲你是對的,它可能會更好的假設,JS是禁用,然後運行腳本以在元素擊中客戶端時轉換元素。 謝謝。 – Kieron 2008-10-29 11:53:16

3

如果不執行腳本,noscript標記用於定義備用內容(文本)。

編輯:嗨基隆,看看這個鏈接:Creating a Server Control for JavaScript TestingDetect if JavaScript is enabled in ASPX

+0

我一直在尋找比這更細粒度的東西。我實際上需要渲染不同的元素,如果JS被禁用。 例如

  • //啓用javascript //禁用JavaScript
Kieron 2008-10-29 11:41:58

+0

+1尋找相同的CP文章=) – StingyJack 2008-10-29 11:51:54

3

瀏覽器不會與請求傳遞Javascript可用性。

我已經做了一件事,雖然我不確定它適用於您的情況,但生成頁面就好像Javascript未啓用,然後使用一些JavaScript關閉僅限HTML的內容並打開HTML-Javascript的東西。

您還可以通過Javascript在首頁點擊「phone home」以在會話中記錄是否啓用Javascript。

0

你需要做的是這個。經過多次測試和深夜之後,我決定使用最簡單的解決方案。將標籤拖到頁面頂部,並確保它讀取「在服務器上運行」。然後,對於Text屬性,將Text =「該網站需要使用Javascript」。這應該是最好的答案。 :D