2017-10-04 5 views
1

Ich versuche, URL zu öffnen, wenn der Benutzer auf eine Schaltfläche in der Plugin-Ansicht klickt. Aber Web Addin wirft Fehler.Pop-up geblockter Fehler beim Öffnen der URL von Outlook Webaddin

Mein Code URL zu öffnen:

let a = document.createElement("a"); 
a.setAttribute('target', '_blank'); 
a.setAttribute("style", "display: none"); 
document.body.appendChild(a); 
a.href = finalUrl; 
a.click(); 
document.body.removeChild(a); 

Fehlermeldung:

enter image description here

App wird aus Speicher abgelehnt, weil dieser Fehler. Wie kann ich diesen Fehler beheben?

Ich möchte keine Dialog-API verwenden, die URL nicht im Browser öffnet.

Antwort

1

Die allgemeine Regel ist das Öffnen eines Fensters wird immer blockiert, wenn es nicht das direkte Ergebnis einer Benutzeraktion ist. Weitere Informationen finden Sie in dieser SO-Frage: Avoid browser popup blockers.

Sie lösen ein Popup aus, weil Sie versuchen, eine click() zu emulieren. Da dies keine direkte Benutzeraktion ist, wird diese Aktion von allen Mainstream-Browsern angezeigt.

Sie müssen dem Benutzer ein anklickbares Element (Link, Schaltfläche usw.) präsentieren, das ein neues Fenster öffnet.

+0

Hier habe ich keine URL zum Zeitpunkt der Wiedergabe. Wenn der Benutzer auf die Schaltfläche klickt, erzeuge ich amazon s3 url dynamisch und öffne es. Was ist die Arbeit um diese Art von Szenarien zu bewältigen? – Rajeev

+0

Sie sollten die 'URI' generieren und' window.open' innerhalb des Click-Event-Handlers der Schaltfläche aufrufen. Wo Sie den Blocker in die Flucht schlagen, ist, wenn Sie diesen Anruf tiefer in den Call-Stack platzieren. Die Alternative wäre, den Benutzer auf die Schaltfläche klicken zu lassen und sie dann mit einer anderen Schaltfläche anzuzeigen, wenn die URI bereit ist. –

Verwandte Themen