Settimeout()javascript函数被忽略

Settimeout()javascript函数被忽略,javascript,function,settimeout,Javascript,Function,Settimeout,我的aspx页面中有一个简单的按钮: <asp:Button ID="a1" runat="server" OnClientClick="test2();" /> SetTimeout被完全忽略-警报不会显示,计时器也不会等待。 我在这个网站上看到了大约10篇关于这个问题的帖子,没有一个解决方案是有效的。 我尝试调用另一个函数而不是警报函数,我尝试使用函数(){..}调用带有参数的函数。 我还尝试直接从OnclientClick函数调用Settimeout: OnClientCli

我的aspx页面中有一个简单的按钮:

<asp:Button ID="a1" runat="server" OnClientClick="test2();" />
SetTimeout被完全忽略-警报不会显示,计时器也不会等待。 我在这个网站上看到了大约10篇关于这个问题的帖子,没有一个解决方案是有效的。 我尝试调用另一个函数而不是警报函数,我尝试使用函数(){..}调用带有参数的函数。 我还尝试直接从OnclientClick函数调用Settimeout:

OnClientClick="setTimeout('alert(\'hello\')',1250);"
不起作用,Settimeout被忽略! 我正在使用ie9。

请尝试:

window.setTimeout(function () { alert('hello'); }, 1250);
请尝试:

window.setTimeout(function () { alert('hello'); }, 1250);

JavaScript运行良好。页面看起来是一样的,javascript看起来好像不起作用,但一切都按照设计进行

下面是正在发生的事情

用户单击按钮。 JavaScript被执行。设置settimeout并开始计时。 runat=“server”现在会发布到服务器(但是超时时间仍然在滴答滴答地响) objects OnClick事件的代码在服务器上运行(正在服务器端重建页面)。 新的响应流将发送到客户端浏览器。 客户端浏览器捕获它并为新页面呈现“新”页面重置javascript(这是您要求的新ASPX页面!)

因此,即使在不同的表单元素上运行runat=“server”,也会停止settimeout或setinterval方法的最终执行

在我看来,更好的编码方法是在客户端使用AJAX将值发布到服务器,在服务器的页面上捕获它们,构建html或javascript并将它们发送回客户端浏览器,以捕获并替换元素id的innerHTML或评估javascript。。。更少的开销,更快,更好,更优雅,更多的控制。如果用户使用.NET构建HTML片段,则可以使用stringbuilder,因为这比多个字符串串联要快得多


希望这能有所帮助。

JavaScript运行良好。页面看起来是一样的,javascript看起来好像不起作用,但一切都按照设计进行

下面是正在发生的事情

用户单击按钮。 JavaScript被执行。设置settimeout并开始计时。 runat=“server”现在会发布到服务器(但是超时时间仍然在滴答滴答地响) objects OnClick事件的代码在服务器上运行(正在服务器端重建页面)。 新的响应流将发送到客户端浏览器。 客户端浏览器捕获它并为新页面呈现“新”页面重置javascript(这是您要求的新ASPX页面!)

因此,即使在不同的表单元素上运行runat=“server”,也会停止settimeout或setinterval方法的最终执行

在我看来,更好的编码方法是在客户端使用AJAX将值发布到服务器,在服务器的页面上捕获它们,构建html或javascript并将它们发送回客户端浏览器,以捕获并替换元素id的innerHTML或评估javascript。。。更少的开销,更快,更好,更优雅,更多的控制。如果用户使用.NET构建HTML片段,则可以使用stringbuilder,因为这比多个字符串串联要快得多


希望这有帮助。

100%有效。试试这个

    $(document).ready(function () {
        $('#<%= DoesNotwork.ClientID %>').click(function (e) {
            e.preventDefault();
            setTimeout(function () {
                alert("Hello");
                $("form").submit();
            },
            3000);
        });
    });
$(文档).ready(函数(){
$('#')。单击(函数(e){
e、 预防默认值();
setTimeout(函数(){
警惕(“你好”);
$(“表格”)。提交();
},
3000);
});
});

它100%工作,试试这个

    $(document).ready(function () {
        $('#<%= DoesNotwork.ClientID %>').click(function (e) {
            e.preventDefault();
            setTimeout(function () {
                alert("Hello");
                $("form").submit();
            },
            3000);
        });
    });
$(文档).ready(函数(){
$('#')。单击(函数(e){
e、 预防默认值();
setTimeout(函数(){
警惕(“你好”);
$(“表格”)。提交();
},
3000);
});
});

您是否在控制台中收到错误?您是否尝试了一个简单的警报(“”),以查看该事件是否正在执行。@詹姆斯·希尔:如何在控制台中看到EEOR?@Sandeep Bansai:是的,调用了该函数,我甚至设置了一个断点并对其进行了调试。它只是跳过setTimeout行。无警报,无延迟。您是否尝试过
window.setTimeout()
?可能有一些关闭问题。你在控制台中有错误吗?你是否尝试过一个简单的警报(“”)来查看该事件是否正在执行。@james Hill:我如何在控制台中看到EEOR?@Sandeep Bansai:是的,调用了该函数,我甚至设置了一个断点并对其进行了调试。它只是跳过setTimeout行。无警报,无延迟。您是否尝试过
window.setTimeout()
?也许有一些关闭问题,然后我想我们需要更多的代码。某个地方有人破译了密码。控制台说什么?(在Chrome上用Ctrl+Shift+j打开控制台。)好的,我想我找到了sonthing,但我不明白:此代码不会导致回发,因此浏览器有时间等待超时结束并显示消息,它可以工作:。这段代码导致回发,当它结束时,超时还没有结束,并且没有显示消息-忽略它:为什么?我不明白为什么没有回发,settimeout就不能工作,而且不能……我不明白你最后的评论,对不起。你能创建一个实时示例并给我们URL吗?那么我想我们需要更多的代码。某个地方有人破译了密码。控制台说什么?(在Chrome上用Ctrl+Shift+j打开控制台。)好的,我想我找到了sonthing,但我不明白:此代码不会导致回发,因此浏览器有时间等待超时结束并显示消息,它可以工作:。这段代码导致回发,当它结束时,超时还没有结束,并且没有显示消息-忽略它:为什么?我不明白为什么没有回发,settimeout就不能工作,而且不能……我不明白你最后的评论,对不起。你能创建一个实时样本并给我们URL吗?