【问题标题】:Settimeout() javascript function is ignoredSettimeout() javascript 函数被忽略
【发布时间】:2011-11-24 16:17:30
【问题描述】:

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

<asp:Button ID="a1" runat="server" OnClientClick="test2();" />

而javascript函数是:

function test2() {

    setTimeout("alert('hello')", 1250);

}

SetTimeout 被完全忽略 - 警报不会显示,计时器也不会等待。 我在这个网站上阅读了大约 10 篇关于这个问题的帖子,没有一个解决方案有效。 我尝试调用另一个函数而不是警报函数,我尝试使用 function(){..} 调用带参数的函数。 我还尝试直接从 OnclientClick 函数调用 Settimeout:

OnClientClick="setTimeout('alert(\'hello\')',1250);"

没有任何效果,Settimeout 被忽略! 我用的是ie9。

【问题讨论】:

  • 控制台是否出现错误?
  • 您是否尝试过简单的警报('')来查看该事件是否正在执行。
  • @james Hill : 我怎么能在控制台中看到错误?
  • @Sandeep Bansai:是的,该函数被调用,我什至设置了一个断点并对其进行了调试。它只是跳过 setTimeout 行。没有警报,没有延迟。
  • 你试过window.setTimeout()吗?也许有一些关闭问题

标签: javascript function settimeout


【解决方案1】:

请尝试:

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

【讨论】:

  • 那么我想我们需要更多代码。某处某处破坏了代码。控制台说什么deos? (在 Chrome 上使用 Ctrl+Shift+j 打开控制台。)
  • 好的,我想我找到了,但我不明白:这段代码不会导致回发,因此浏览器有时间等待超时结束并显示消息,它工作原理:。此代码会导致回发,在它结束时超时尚未结束并且不显示消息 - 忽略它:
  • 我不明白你最后的评论,抱歉。你能创建一个现场样本并给我们网址吗?
【解决方案2】:

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

这就是正在发生的事情......

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

因此,即使是不同表单元素上的 runat="server" 也会阻止 settimeout 或 setinterval 方法最终执行。

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

希望这会有所帮助。

【讨论】:

    【解决方案3】:

    这是 100% 的工作试试这个..

        $(document).ready(function () {
            $('#<%= DoesNotwork.ClientID %>').click(function (e) {
                e.preventDefault();
                setTimeout(function () {
                    alert("Hello");
                    $("form").submit();
                },
                3000);
            });
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      • 1970-01-01
      相关资源
      最近更新 更多