2017-04-02 60 views
0

我用的是舊系統,在框架1.0的發展,並在框架2.0 的源代碼現在運行的是:使用錯誤setTimeout函數回傳?

<select name="DropDownList1" AutoPostBack="true" id="DropDownList1" runat="server"> 
    <option selected="selected" value="One">One</option> 
    <option value="Two">Two</option 
</select> 

生成的HTML:

<select name="DropDownList1" onchange="javascript:setTimeout('__doPostBack(\'DropDownList1\',\'\')', 0)" id="DropDownList1"> 
    <option selected="selected" value="One">One</option> 
    <option value="Two">Two</option> 
</select> 

它不工作,直到我刪除周圍__doPostBack報價。爲什麼? 我收到一個JavaScript錯誤1032:無效的字符。 我如何使它工作? 謝謝!

+2

這應該工作,在這個意義上的報價是沒有問題的:'setTimeout'允許,將進行評估一個字符串參數。你遇到什麼問題? *「它不工作」*不是很有啓發性。 – trincot

+0

我試過你的代碼,並沒有得到這樣的錯誤。你能提供一個重現問題的小提琴嗎? – trincot

回答

0

這裏找到,之後花了時間來解決: https://groups.google.com/forum/#!topic/microsoft.public.scripting.vbscript/q_Yp5Ngczeo

答: 如果包括 ASPX頁面上的任何其他代碼塊前的VBScript代碼塊,下面的語句將在IE中失敗(和該錯誤是 遠離顯而易見的,因爲它是untrappable並且僅存在第1行的 無效字符表示,字符2):

「的javascript:setTimeout的( '__ doPostBack(\' anyASPXcontrol \ '\' \ ')',0)」

這是在IE 6和可能的早期版本(我只與V6至 發揮。)我不知道這是否會影響IE 7,因爲我還沒有安裝 對於測試最近的錯誤。請注意,即使的 前綴「JavaScript的:」被使用,setTimeout函數假定它的調用 VBScript函數,大概是因爲第一個腳本塊是 的VBScript塊。

+0

對於未來,我認爲要注意,這就是爲什麼你需要在你的問題提供更好的細節是很重要的。幾乎沒有其他人能夠解決這個問題,因爲你沒有提供你的問題的重要信息。你沒有提到IE6,你沒有提到使用VBScript,你只是對「框架」1.0和2.0做了一個神祕的引用。現在,我們可以猜出你在討論什麼框架,但如果你更具體,你會更容易幫助你。 – Thor84no