2

我目前正在嘗試註冊一個.NET頁面的JS函數調用,它只是簡單地調用關閉窗口的.aspx頁面上的一個小函數。RegisterClientScriptBlock不完整的JS腳本標記

的代碼的RegisterClientScriptBlock是這樣的:

Page.ClientScript.RegisterClientScriptBlock (typeof(Page), "closeBox", "<script type='text/javascript'>closeBox();</script>"); 

這樣的事情在其他地方工作在不同的頁面上的應用程序。然而,在這種情況下,我得到一個運行時JS錯誤:錯誤:預期「/」,當我調試,果然插入JavaScript是:

<script type='text/javascript'>closeBox();< 

正如你所看到的,未加/腳本>出於某種原因!我試圖省略我自己使用的標籤:

Page.ClientScript.RegisterClientScriptBlock (typeof(Page), "closeBox", "closeBox();", true); 

但結果相同。

我也試過RegisterStartupScript無濟於事。

有沒有其他人遇到過這個?任何想法是什麼導致它,以及如何解決它?

+0

Bah錯誤是在別的地方,但調試器指向這條線,完全誤導我。在向全球尋求幫助後幾分鐘,我總是發現我的錯誤很蠢? – 2009-09-29 11:13:43

+0

不如作者報告其打嗝時隱約回答;) – Lazarus 2009-09-29 11:14:35

+0

我的打嗝在文件上更早,它在頁面加載時執行一些Javascript計算,其中一個計算碰巧將一個(然後)空字符串除以2. – 2009-09-29 11:19:29

回答

0

錯誤原來是完全不相關的東西。

0

我不確定它是否完全一樣(我的記憶不是曾經的記憶),但我認爲我以前遇到類似的問題。解決方案是在腳本的各個部分之間放置一些行終止符,即

Page.ClientScript.RegisterClientScriptBlock (typeof(Page), "closeBox", "<script type='text/javascript'>\n\rcloseBox();\n\r</script>"); 
0

RegisterClientScriptBlock在哪裏?它是否在<script runat="server">元素中?

如果是這樣,ASPX解析器會看到</script>你的C#字符串字母爲封閉script元素的結尾,並會停在那裏。如果你想把序列號</script>放在<script>(這也適用於普通的JavaScript),你必須轉義它才能打破序列。一個好方法是:

"\x3C/script" 
+0

很高興知道,謝謝! 但事實證明,這是一場虛驚,它完全是另一回事(如上面簡要描述的),足夠令人尷尬。 – 2009-09-29 12:59:46