2011-11-21 16 views
20

Mam funkcję jquery i muszę ją wywołać po otwarciu strony internetowej w ramce iframe.Jak wykonać wywołanie funkcji jquery po "X" sekundach

Próbuję otworzyć link w elemencie iframe i po jego otwarciu muszę wywołać poniższą funkcję. Jak to zrobić?

Oto moja funkcja:

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

To jest mój przycisk, aby otworzyć łącze w iframe:

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

Właściwie jest to prosta strona mam:

enter image description here

A to jest wiadomość enter image description here

+0

nie można po prostu użyć onclick treser? Mam na myśli, jeśli iframe ładuje onclick, nie możesz ustawić funkcji, aby uruchomić onclick też? – bozdoz

+0

Tak, ale mogę to tylko błyskać oboje naraz. – coder

+0

Wygląda na to, że używasz aspx (). Jeśli tak, powinieneś również oznaczyć to pytanie jako aspx. –

Odpowiedz

78

Możesz po prostu użyć normalnej metody setTimeout w JavaScript.

czyli ...

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

W przykładzie, można użyć showStickySuccessToast bezpośrednio.

+0

Najpierw dziękuję za odpowiedź, a jeśli to zrobię, miga ona po prostu w obu przypadkach, chociaż ustawiłem interwał czasowy na 9sek. – coder

+1

Co "oboje"? –

+0

@Stein G. Strindhaug - element iframe, a także wiadomość. – coder

2

Jeśli możesz wyświetlić rzeczywistą stronę, prawdopodobnie pomożemy Ci lepiej.

Jeśli chcesz wywołać przycisk dopiero po załadowaniu iframe, możesz chcą sprawdzić, czy został załadowany lub użyj 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

Mam zaktualizowane moje pytanie, możesz mieć widok na to co mam na myśli! I używam fancybox Iframe do wyświetl stronę internetową. – coder

+0

Nie wiem zbyt wiele na temat interakcji z klatkami, ale zaryzykuję: jak zmienić funkcję klikania na $ ("# iframeID"). Child ("przycisk #"). Click()? –

+0

Właściwie sprawiłem, że działał, dając ustawiony czas na przycisk zamiast funkcji jako var timer = setTimeout (function() {$ ("# <% = Button2.ClientID%>"). Click();}, 9000); i działa dobrze. Zawsze dziękuję za cenną odpowiedź Spróbuję z twoimi sugestiami. – coder

Powiązane problemy