2016-07-14 11 views
0

Ich verwalte eine ziemlich große Website (einige hundert Seiten) und ich bin auf der Suche nach einer Möglichkeit, Javascript auszuführen - dann öffnen Sie einen Link in der aktuellen Registerkarte und einen anderen in einem neuen Tab. Die Href-Verknüpfung funktioniert nach dem Countdown ordnungsgemäß. Aber die js-Verbindung wird ignoriert. Wie man beide öffnet, nachdem der Countdown abgelaufen ist?Öffnen Sie zwei Links, nachdem JavaScript ausgeführt wurde. One in einem neuen Tab in

html

<a href="http://www.example.com/here"  onclick="startTimer(this);return false; window.open('http://www.example.com/newtab');">anchor text</a> 

js

<script> 
function startTimer2(theLink2) { 
    userInput = 25; 
    if(userInput.length == 0){ 
     alert("Please enter a value"); 
    } else { 
     var numericExpression = /^[0-9]+$/; 

     function display1(notifier, str) { 
      document.getElementById(notifier).innerHTML ='Please Wait: ' + str; 


     } 

     function toMinuteAndSecond(x) { 
      return Math.floor(x/60) + ":" + x%60; 
     } 

     function setTimer(remain, actions) { 
      (function countdown() { 
       display1("countdown", toMinuteAndSecond(remain));   
       actions[remain] && actions[remain](); 
       (remain -= 1) >= 0 && setTimeout(countdown, 1000); 
      })(); 

     } 

     setTimer(userInput, { 
      0: function() { window.location=theLink2.href; } 
     }); 

    } 
} 
</script> 

Antwort

0

ändern startTimer2() so dauert es zwei Argumente: den Link und die URL in einem neuen Fenster zu öffnen. Rufen Sie dann window.open() auf, wenn der Timer abgelaufen ist.

function startTimer2(theLink2, windowURL) { 
    userInput = 25; 
    if(userInput.length == 0){ 
     alert("Please enter a value"); 
    } else { 
     var numericExpression = /^[0-9]+$/; 

     function display1(notifier, str) { 
      document.getElementById(notifier).innerHTML ='Please Wait: ' + str; 


     } 

     function toMinuteAndSecond(x) { 
      return Math.floor(x/60) + ":" + x%60; 
     } 

     function setTimer(remain, actions) { 
      (function countdown() { 
       display1("countdown", toMinuteAndSecond(remain));   
       actions[remain] && actions[remain](); 
       (remain -= 1) >= 0 && setTimeout(countdown, 1000); 
      })(); 

     } 

     setTimer(userInput, { 
      0: function() { 
       window.open(windowURL); 
       window.location=theLink2.href; 
      } 
     }); 

    } 
} 

HTML:

<a href="http://www.example.com/here" onclick="startTimer2(this, 'http://www.example.com/newtab');return false;">anchor text</a> 
+0

Dies sofort das Fenster öffnet. Ich möchte es warten, bis die Timer-Funktion beendet ist. Es verzögert aber immer noch die zweite Verbindung ... also Fortschritte. – Dario

+0

Ich bin zwar stundenlang dabei gewesen, aber meine js ist nicht gut, aber eine Lösung dafür ist, mich zu umgehen – Dario

+0

Dann sollten Sie 'window.open()' in der Funktion aufrufen, die ausgeführt wird, wenn der Timer beendet ist, nicht in der ' onclick'. – Barmar

Verwandte Themen