【问题标题】:How to make a jquery function call after "X" seconds如何在“X”秒后进行 jquery 函数调用
【发布时间】:2012-01-03 05:20:17
【问题描述】:

我有一个 jquery 函数,我需要在 iframe 中打开网站后调用它。

我正在尝试在 iframe 中打开一个网络链接,打开它后我需要调用以下函数。 那我该怎么做呢?

这是我的功能:

<script type="text/javascript">
       $(document).ready(function(){
           $("#<%=Button1.ClientID%>").click(function (event) {

            $('#<%=TextBox1.ClientID%>').change(function () {
                $('#various3').attr('href', $(this).val());
            });
            $("#<%=Button2.ClientID%>").click();
        });
      })
    function showStickySuccessToast() {
        $().toastmessage('showToast', {
            text: 'Finished Processing!',
            sticky: false,
            position: 'middle-center',
            type: 'success',
            closeText: '',
            close: function () {

            }
        });
    }

    </script>

这是我在 IFrame 中打开链接的按钮:

<a id="various3" href="#"><asp:Button ID="Button1" 
runat="server" Text="Button" OnClientClick="Button2_Click"/></a>

实际上这是我拥有的简单页面:

这就是信息

【问题讨论】:

  • 你不能只使用 onclick 处理程序吗?我的意思是,如果 iframe 加载 onclick,你不能将函数也设置为运行 onclick 吗?
  • 是的,我可以,但它只会同时闪烁它们。
  • 看起来您正在使用 aspx ()。如果是这样,您也应该将问题标记为 aspx。
  • 没问题,感谢您提供的信息,我已对其进行了纠正,现在可以正常使用了。

标签: jquery function call settimeout


【解决方案1】:

你可以在 JavaScript 中使用普通的 setTimeout 方法。

即...

setTimeout( function(){ 
    // Do something after 1 second 
  }  , 1000 );

在您的示例中,您可能希望直接使用showStickySuccessToast

【讨论】:

  • 首先感谢您的回复,如果我这样做了,虽然我已将时间间隔设置为 9 秒,但它只会同时闪烁它们。
  • @Stein G. Strindhaug-Iframe 以及消息。
  • @user944919 那么你用来选择效果元素的任何css类都可能匹配这两个元素......
  • 如果你需要一个明确的超时时间,你应该定义 var 到 setTimeout 并把这个代码: clearTimeout(timer);
  • 啊哈...这对我来说似乎很简单。
【解决方案2】:

如果您可以显示实际页面,我们可能会为您提供更好的帮助。

如果您只想在 iframe 加载后触发按钮,您可以 想检查它是否已加载或使用 iframe.onload:

<iframe .... onload='buttonWhatever(); '></iframe>


<script type="text/javascript">

    function buttonWhatever() {
        $("#<%=Button1.ClientID%>").click(function (event) {
            $('#<%=TextBox1.ClientID%>').change(function () {
                $('#various3').attr('href', $(this).val());
            });
            $("#<%=Button2.ClientID%>").click();
        });

        function showStickySuccessToast() {
            $().toastmessage('showToast', {
                text: 'Finished Processing!',
                sticky: false,
                position: 'middle-center',
                type: 'success',
                closeText: '',
                close: function () { }
            });
        }
    }

</script>

【讨论】:

  • 我已经更新了我的问题,您可以了解我的意思!而且我正在使用 fancybox Iframe 来显示网页。
  • 我不太了解与框架交互,但我会冒险:如何将点击功能更改为 $('#iframeID').child('#button').click() ?
  • 实际上我通过给按钮设置超时而不是函数作为 var timer = setTimeout(function () { $("#").click( ); }, 9000);并且工作正常。无论如何感谢您的宝贵回答,我会尝试您的建议。
  • 你的回答也是最好的,但我没有使用普通的 Iframe,所以这也是一个不错的选择,将这些普通的 Iframe 与 Asp.Net 一起使用。
  • +1,因为你为我做了这么多尝试,给了我新的思考方式。
【解决方案3】:

试试这个

setTimeout( function(){ 
    // call after 5 second 
  }  , 5000 );

【讨论】:

  • 请说明它与接受的答案有何不同,以及为什么这样可以解决问题,这将真正有助于提高您的帖子质量,并可能导致更多的赞成票。
  • 另外,我们不要忘记这是一个将近 8 年的问题,已经回答了,并且有一个公认的答案。另外,这个答案真的很差,没有解释任何东西,或者贡献了任何新的东西(重复),---好吧,再读一遍第一句话。
猜你喜欢
  • 1970-01-01
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
相关资源
最近更新 更多