Ich wollte nur eine kleine Sache machen, die Winform mit HTML5 kombiniert. Da wurde ich plötzlich interessiert und wollte eine WeChat-Webversion darin einbetten.
Okay, sobald die Idee aufkommt, handeln Sie. Der Endeffekt ist wie folgt:
Von Anfang an hatte ich geplant, einen Iframe in die Seite einzubetten und auf https://wx.qq.com zu verweisen, was in Ordnung wäre, aber ich war immer noch zu naiv und die WeChat-Webversion würde automatisch springen. Das Ergebnis ist wie folgt:
Deshalb habe ich online nach einer Möglichkeit gesucht, Iframe-Sprünge zu verhindern, indem ich die beiden Attribute security=restrictedsandbox= zum Iframe-Tag hinzugefügt habe. Ersteres ist eine Funktion des IE, die js verbietet, und letzteres ist eine Funktion von HTML5.
Verwenden Sie sandbox=allow-scripts allow-same-origin allow-popups
um Sprünge zu verhindern. Allerdings...das Ergebnis ist folgendes:
Dann entdeckte ich, dass dieser Sprung tatsächlich zur Sprungseite navigiert, nachdem die ursprüngliche Seite geschlossen wurde. Sie können also das Seitenschließereignis onbeforeunload verwenden, um den Sprung zu verhindern. Fügen Sie der Seite also den folgenden Code hinzu:
document.body.onbeforeunload = function (event) { var rel = asdfawfewf; if (!window.event) { event.returnValue = rel; };
Dann habe ich festgestellt, dass das Ergebnis immer noch so ist:
Was ist der Grund? Keine Reaktion auf den Vorfall? Oder ist der Sprung in der WeChat-Webversion zu großartig? Diesen Vorfall einfach ignorieren? Also habe ich einen neuen leeren HTML-Code erstellt und das Ereignis zur Überprüfung separat hinzugefügt.
<!DOCTYPE html> <html lang=en xmlns=http://www.w3.org/1999/xhtml> <head> <meta charset=utf-8 /> <title></title> </head> < body></body> <script>document.body.onbeforeunload = function (event) { var rel = asdfawfewf; if (!window.event) { event.returnValue = rel; } else { window.event.returnValue = rel; </script> </html>
Das Ergebnis ist machbar:
Aber nachdem der Iframe in die Seite eingebettet wurde, springt er direkt. Sie können den folgenden Code ausprobieren.
<!DOCTYPE html> <html lang=en xmlns=http://www.w3.org/1999/xhtml> <head> <meta charset=utf-8 /> <title></title> </head> < body> <iframe src=https://wx.qq.com/ frameborder=0 style=position: absolute;border: navajowhite;left: 0;height: calc(100% - 30px);width:100%> </iframe> </body> <script> document.body.onbeforeunload = function (event) { var rel = asdfawfewf; if (!window.event) { event.returnValue = rel } else { window.event.returnValue = rel; } };
Als mir die Ideen ausgingen, schaltete ich es immer wieder ein und aus, um zu sehen, ob diese Methode funktionierte. Plötzlich stellte ich fest, dass das Ereignis „onbeforeunload“ nicht ausgelöst wird, wenn die Seite kurz nach dem Öffnen geschlossen wird. Nach einigen Sekunden Wartezeit und anschließendem Schließen der Seite wird das Ereignis ausgelöst und eine Eingabeaufforderung angezeigt .
Probieren Sie die verzögerte Iframe-Zuweisung an src aus (JQuery wird hier zitiert).
<!DOCTYPE html> <html lang=en xmlns=http://www.w3.org/1999/xhtml> <head> <meta charset=utf-8 /> <title></title> <script src=scripts /jquery-2.2.3.js></script> </head> <body> <iframe id=iframe frameborder=0 style=position: absolute;border: navajowhite;left: 0;height: calc(100% - 30px);width:100%> </iframe> </body> <script> $(function () { setTimeout(function () { iframe.src = https: //wx.qq.com/; },5000 }); document.body.onbeforeunload = function (event) { var rel = asdfawfewf; if (!window.event) { event.returnValue = rel; } else { window.event.returnValue = rel; </html>
Das Ergebnis ist tatsächlich erfolgreich. Es erscheint eine Frage, ob Sie diese Seite verlassen möchten. Es gibt keinen Sprung auf den Erfolg. Das Bild unten ist ein Bild meines fertigen Produkts.
Sie sind fertig. Sie können normal chatten und Dateien übertragen, aber Sie können keine Screenshots machen.
Der Nachteil besteht darin, dass Sie zum Abschließen der Anmeldung auf die Popup-Schaltfläche „Abbrechen“ klicken müssen, und zwar zweimal. Beim ersten Öffnen der Seite und beim zweiten Mal nach dem Scannen des QR-Codes springt die Seite erneut . Es gibt derzeit keine Möglichkeit, dieses Problem zu lösen. Ich hoffe, dass Freunde, die eine Möglichkeit haben, dieses Problem zu lösen, mir einige Vorschläge machen können. Der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte Ihnen allen auch für Ihre Unterstützung danken VeVb Wulin-Website!