簡體   English   中英

如何在頁面加載之前執行Javascript函數?

[英]How can I execute Javascript function before Page load?

我正在使用隱藏字段'Isjsenabled'來檢測客戶端的Javascript是啟用還是禁用。 如果啟用了Javascript,則會觸發Javascript函數,並將隱藏字段的值設置為1。

我想檢查服務器端Page_load的隱藏值。 但問題是在頁面加載后Javascript被觸發。

你有什么建議嗎?

Html部分

<script type="text/javascript">
    $(function() {
        $("#<%= Isjsenabled.ClientID %>").val(1);
    }); 
</script>

<input id="Isjsenabled" runat="server" value ="0"  type="hidden"  />

部分背后的代碼

protected void Page_Load(object sender, EventArgs e) {                
    HtmlInputHidden hdn = this.FindControl("Isjsenabled") as HtmlInputHidden;
        if (hdn != null)
            if (hdn.Value != null && hdn.Value == "0")
                Helper.SetCookie("IJE", "0");
            else
                Helper.SetCookie("IJE", "1");
}

如果不考慮你想要進入的方向,那么所有名為NOSCRIPT的瀏覽器都支持一些使用過的標記。

<noscript>
<img src="http://myserver/notify_no_script.aspx" style="display:none">
</noscript>

正如您所看到的,我們的想法是讓瀏覽器請求圖片,但前提是禁用了javascript。 此頁面可以設置會話變量,指出當前客戶端沒有可用於當前會話中所有代碼的腳本功能。

或者,您可以遵循當前的方法:

<noscript>
<input type="hidden" name="noscript" value="1">
</noscript>
<script><!--
document.writeline('<input type="hidden" name="noscript" value="0">');
//--></script>

希望這可以幫助,

-Oisin

你應該將你的腳本或noscript標題作為一個頁面繪制到自身上,然后重定向(通過元標記或通過腳本location.href)到你想要去的下一個地方,如果打開了javascript。 這將需要兩個步驟,但它會得到你正在尋找的結果。 您可以在重定向查詢中將所需信息傳遞給自己。

javascript可以自己設置cookie。

var myDate = new Date()
document.cookie = 'IJE=1; expires=' + myDate.toGMTString()

這會解決您的問題嗎?

不引人注目的JavaScript可能會引起人們的興趣。 允許您的頁面優雅地降級將簡化開發。 最初設計沒有JavaScript並增強體驗。 如果您的應用程序非常需要JavaScript並且絕對需要它才能運行,那么這可能不是一個選項。 在這種情況下,使用noscript標記通知您的用戶他們需要啟用JavaScript是一個好主意。

另外,看看x0n的評論。 這里有一個參考,有助於理解HTTP請求生命周期

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM