2011-11-21 21 views
20

Tengo una función jquery y debo llamarla después de abrir el sitio web en un iframe.Cómo hacer una llamada a la función jquery después de "X" segundos

Estoy tratando de abrir un enlace web en un Iframe y después de abrirlo necesito llamar a la función siguiente. Entonces, ¿cómo puedo hacer eso?

Aquí es mi función:

<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> 

Ésta es mi botón para abrir el enlace en un iframe:

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

En realidad este es el simple Página estoy teniendo:

enter image description here

Y este es el mensaje enter image description here

+0

no puedes utilizar un onclick ¿entrenador de animales? Quiero decir, si el iframe se carga onclick, ¿no puedes configurar la función para ejecutar también cliquear? – bozdoz

+0

Sí, puedo, pero solo muestra los dos a la vez. – coder

+0

Parece que está usando aspx (). Si es así, también debería haber etiquetado la pregunta como aspx. –

Respuesta

78

Puede utilizar el método setTimeout normal en JavaScript.

es decir ...

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

En su ejemplo, es posible que desee utilizar showStickySuccessToast directamente.

+0

Primero gracias por su respuesta y si hago esto, solo parpadea a los dos a la vez, aunque he establecido el intervalo de tiempo en 9 segundos. – coder

+1

¿Qué "ambos"? –

+0

@Stein G. Strindhaug-The Iframe, así como el mensaje. – coder

2

Si pudiera mostrar la página real, nosotros, posiblemente, podríamos ayudarlo mejor.

Si desea activar el botón sólo después de que se carga el iframe, es posible que desee comprobar si ha sido cargada o utilice el 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> 
+0

He actualizado mi pregunta, puede ver lo que quiero decir. Y estoy usando fancybox Iframe para mostrar la página web. – coder

+0

No sé mucho acerca de cómo interactuar con marcos pero me arriesgaré: ¿qué tal si cambias la función de hacer clic a $ ('# iframeID'). Child ('# button'). Click()? –

+0

En realidad lo hice funcionar dando tiempo de espera al botón en lugar de la función como var timer = setTimeout (function() {$ ("# <% = Button2.ClientID%>"). Click();}, 9000); y funciona bien. De todos modos gracias por tu valiosa respuesta, intentaré con tus sugerencias. – coder

Cuestiones relacionadas