Unterschiedliches window.open-Verhalten (...) beim Ausführen von Internet Explorer 11 als Administrator

8

Ich sehe ein anderes Verhalten bei Aufrufen von window.open (), wenn Internet Explorer als Administrator ausgeführt wird. Ich bin nicht in der Lage, es in einer sanboxed iframe Umgebung wie jsfiddle / coypen usw. zu reproduzieren, aber ich werde mein Bestes tun, um das Problem hier zu erklären.

Im IE, der nicht als Administrator ausgeführt wird, wenn ich den Knopf "Empty" drücke, ruft er window.open ("", windowname, ...) auf und ein neues leeres Fenster erscheint. Als nächstes drücke ich den Knopf "Full" und es wird zu window.open (" Ссылка ", windowname, ..) und was ist los Das alte leere Fenster wird auf Google gesetzt.

In IE wird das anfängliche leere Fenster bei der Ausführung als Administrator nicht überschrieben. Stattdessen erscheint neben dem leeren Fenster ein neues Fenster mit Google.

Ich habe meinen Testcode unten eingefügt. Ich bin mir nicht sicher, ob die Tatsache, dass es in einem Iframe ist, relevant ist, aber ich schließe es nur für den Fall ein,

%Vor%

Wo die Quelle in Ссылка aussieht

%Vor%     
carson 07.10.2015, 21:19
quelle

2 Antworten

2

Das Verhalten von window.open () hängt von einigen Dingen ab, besonders im Internet Explorer.

Da Sie einen Breiten- / Höhenparameter angeben, sollte der Browser Ihr neues Fenster als Popup öffnen (wenn Sie die Einstellungen so eingestellt haben, dass dies erlaubt ist) - wenn Sie die Breite / Höhe entfernen, öffnet sich oft ein Browser Registerkarte stattdessen.

Da Ihr windowname wiederverwendet wird und keine Leerzeichen oder Hyphen enthält, sollte der Browser dieselbe Fensterinstanz für beide wiederverwenden. (Wenn Sie Leerzeichen oder Bindestriche hatten, würde der IE ersticken und das Popup nicht öffnen (bekannter IE-Fehler)).

"TESTWINDOW" ist wahrscheinlich einzigartig genug dafür, aber bedenken Sie auch, dass der IE einen Fehler hat, wenn Sie eine andere Site haben, die versucht, window.open () aufzurufen und sie den gleichen Fensternamen wie Sie / Ihre Site verwenden, Der Browser wird dieses Popup-Fenster wiederverwenden. IE "namespace" sie nicht ordnungsgemäß zu einer Domäne (bekannter Fehler).

Jetzt an einem Punkt (IE7 / 8?) hat Microsoft einige Verhaltensweisen um das Starten eines Fensters mit einer Position von "" (leere Zeichenfolge) und / oder "about: blank" oder "javascript :;" oder "javascript: void;" usw., so dass sie nicht auf dem gleichen Level vertraut wurden wie die Domain, die sie geöffnet hat. Möglicherweise ist ein Problem damit verbunden. (Wenn Sie zwei verschiedene, aber "echte" URLs verwenden, wäre ich neugierig, ob das Verhalten besser ist).

Da das neue Popup-Fenster ein benanntes Fenster ist, wenn der iframe oder sein Elternteil den Namen "TESTWINDOW" hat, werden Sie auch seltsame Ergebnisse erhalten.

Schließlich haben Sie angegeben, dass Sie abhängig vom angemeldeten Benutzer unterschiedliche Ergebnisse erhalten. Da die Einstellungen in IE pro Benutzer sind, sehen Sie sehr wahrscheinlich unterschiedliche Einstellungen in Aktion. z.B. Hat eines Ihrer Profile Ihre Domain (oder localhost) in der Kompatibilitätsmodus-Liste? Oder hat eines Ihrer Profile unterschiedliche Popup-Blockierungsregeln oder Datenschutzeinstellungen?

    
scunliffe 23.06.2017, 18:52
quelle
0

Versuchen Sie es anders, ohne window.open ()

zu verwenden

gibt es: Alertify JS eine gute Bibliothek für Nachrichten.

fügen Sie einfach die js und css Dateien hinzu:

%Vor%

Hier ist ein Beispiel:

%Vor%

Es gibt viele Möglichkeiten wie: prompt, confim, log, success, ...

Probieren Sie es aus:)

    
Mimouni 15.10.2015 13:54
quelle