Ich arbeite an einer Client-Site, um eine PDF nach dem Absenden eines Formulars durch Öffnen der PDF-URL in einem neuen Tab bei der Einreichung von Formular herunterladen. Aber in Chrome, Safari und FF blockieren sie alle das "Popup". Ich habe festgestellt, dass einige Artikel über Möglichkeiten sprechen, Browser daran zu hindern, window.open() zu blockieren. Sie beziehen sich normalerweise auf Ajax, aber ich benutze keinen Ajax. Die anderen Artikel sprechen darüber, wie window.open() nur innerhalb eines Click-Ereignisses funktioniert. Und selbst das funktioniert nicht für mich. Es muss nicht eine Tonne SinnKönnen wir nicht mehr window.open() verwenden
machen, aber in meinem Beispiel versuche ich das Auslösen einer Klick und
<script>
jQuery(document).ready(function() {
jQuery(".gform_confirmation_message a").on("click", function(e){
e.preventDefault();
var newWin = window.open("", "_blank");
newWin.location = jQuery(".gform_confirmation_message a").attr("href");
});
jQuery(".gform_confirmation_message a").trigger("click");
});
</script>
Auch wenn ich eine einfache Linie außerhalb jquery setzen, funktioniert nicht und blockiert wird.
var newWin = window.open("", "_blank");
Auch beide von diesen beiden tun absolut nichts. Das Popup wird nicht geblockt.
jQuery(".gform_confirmation_message a").trigger("click");
OR
jQuery(".gform_confirmation_message a").click();
Ich weiß, Browser sind auf Spam/Ad-Sicherheit hämmern, aber das ist lächerlich.
Ein versteckter Iframe, der der Seite hinzugefügt wurde, die zur URL ging, wäre wahrscheinlich eine effektive Arbeit. – Taplar
@Carcigenicate window.open() ist seit jeher eine JavaScript-Funktion. Keiner der anderen Programmierer in meinem Team hat etwas über alle Browser gehört, die diese Funktion entfernen. – pinksharpii
Related: https://stackoverflow.com/questions/3077242/force-download-a-pdf-link-using-javascript-ajax-jquery –