2017-12-08 1 views
0

Ich hoffe, alle haben einen schönen Tag! Ich habe versucht, ein Bookmarklet zu erstellen, das automatisch Links auf der Seite mit POST-Headern öffnet, aber nur der letzte Link wird zu einer neuen Seite erweitert. Gibt es irgendwelche Gründe warum? (Wenn ja, wie könnte ich über die Reparatur nachsehen?)Neue Registerkarte in Javascript Bookmarklet mit POST

javascript: (function() { 
     function openWindowWithPost(url, data) { 
      var form = document.createElement("form"); 
      form.target = "_blank"; 
      form.method = "POST"; 
      form.action = url; 
      form.style.display = "none"; 

      for (var key in data) { 
       var input = document.createElement("input"); 
       input.type = "hidden"; 
       input.name = key; 
       input.value = data[key]; 
       form.appendChild(input); 
      } 

      document.body.appendChild(form); 
      form.submit(); 
      document.body.removeChild(form); 
     } 
     var els = document.getElementsByTagName("a"); 
     for (var i = 0, l = els.length; i < l; i++) { 
      var el = els[i]; 

      console.log(typeof el.href); 
      console.log(el.href); 
      if (el.href.startsWith('example.com')) { 
       console.log(el.href.slice(39)); 
       openWindowWithPost("example.php", { 
        id: el.href.slice(39), 
        pdf: "-" 
       }); 
      } 
     } 
    })(); 

Vielen Dank!

Antwort

0

Ihr JavaScript-Code wird ausgeführt, als wäre es Code auf der Seite (wie Sie wahrscheinlich wissen), beide mit seinen Berechtigungen und seine Einschränkungen.

Browser erlauben keinen JavaScript-Code in Seiten, um eine unbegrenzte Anzahl von Fenstern zu öffnen, weil sie früher von ruchlosen Websites missbraucht wurden. Wenn der Code auf einer Seite dies versucht, verhindert der Browser dies. Die Besonderheiten von wie es verhindert und bis zu welchem ​​Grad es passieren kann sind Browser-spezifisch.

Sie müssen wahrscheinlich ein Benutzerereignis pro zu öffnendem Fenster haben (z. B. das Bookmarklet wiederholt auslösen, und das Bookmarklet muss jeweils einen Link erstellen).

Verwandte Themen