2017-04-02 56 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