Solo quería hacer algo pequeño que combinara winform con html5. De repente me interesé y quise incorporar una versión web de WeChat.
Bien, tan pronto como surja la idea, actúe. El efecto final es el siguiente:
Desde el principio, planeé incrustar un iframe en la página y apuntar a https://wx.qq.com, lo cual estaría bien, pero todavía era demasiado ingenuo y la versión web de WeChat saltaría automáticamente. El resultado es el que se muestra a continuación:
Así que busqué en línea una forma de evitar saltos de iframe, que consiste en agregar los dos atributos seguridad=restrictedsandbox= a la etiqueta de iframe. La primera es una función de IE que prohíbe js y la segunda es una función de HTML5.
Utilice sandbox=allow-scripts allow-same-origin allow-popups para evitar saltos. Sin embargo... el resultado es este:
Luego descubrí que este salto en realidad es navegar a la página de salto después de cerrar la página original. Por lo tanto, puede utilizar el evento de cierre de página antes de la descarga para evitar el salto. Entonces agregue el siguiente código a la página:
document.body.onbeforeunload = función (evento) { var rel = asdfawfewf; if (!window.event) { event.returnValue = rel } else { window.event.returnValue = rel;Luego descubrí que el resultado sigue siendo este:
¿Cuál es la razón? ¿No hay respuesta al incidente? ¿O el salto a la versión web de WeChat es demasiado asombroso? ¿Simplemente ignorar este incidente? Entonces creé un nuevo html en blanco y agregué el evento por separado para su verificación.
<!DOCTYPE html> <html lang=en xmlns=http://www.w3.org/1999/xhtml> <head> <meta charset=utf-8 /> <title></title> </head> < cuerpo></cuerpo> <script>document.body.onbeforeunload = función (evento) { var rel = asdfawfewf if (!window.event) { evento.returnValue = rel; } más { ventana.event.returnValue = rel } };El resultado es factible:
Pero después de incrustar el iframe en la página, salta directamente. Puedes probar el siguiente código.
<!DOCTYPE html> <html lang=en xmlns=http://www.w3.org/1999/xhtml> <head> <meta charset=utf-8 /> <title></title> </head> < cuerpo> <iframe src=https://wx.qq.com/ frameborder=0 estilo=posición: absoluta;borde: navajowhite;izquierda: 0;altura: calc(100% - 30px); ancho: 100%> </iframe> </body> <script> document.body.onbeforeunload = función (evento) { var rel = asdfawfewf; if (!window.event) { event.returnValue = rel } else { ventana.event.returnValue = rel;Cuando me quedé sin ideas, seguí encendiéndolo y apagándolo para ver si este método funcionaba. De repente descubrí que si la página se cierra dentro de un corto período de tiempo después de abrirla, el evento onbeforeunload no se activará. Después de esperar unos segundos y luego cerrar la página, el evento se activará y aparecerá un mensaje. .
Vamos, prueba la asignación retrasada de iframe a src (aquí se cita JQuery).
<!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 estilo=posición: absoluta;borde: navajowhite;izquierda: 0;alto: calc(100% - 30px);ancho:100%> </iframe> </body> <script> $(función () { setTimeout(función () { iframe.src = https: //wx.qq.com/; },5000 }); document.body.onbeforeunload = función (evento) { var rel = asdfawfewf; if (!window.event) { event.returnValue = rel } else { window.event.returnValue = rel } };El resultado es efectivamente exitoso. Aparecerá un mensaje si desea abandonar esta página. No hay salto hacia el éxito. La siguiente imagen es una imagen de mi producto terminado.
Ya terminaste. Puedes chatear y transferir archivos normalmente, pero no puedes tomar capturas de pantalla.
La desventaja es que debe hacer clic en el botón emergente de cancelar para completar el inicio de sesión, y debe hacerlo dos veces: la primera vez para abrir la página y la segunda vez después de escanear el código QR, la página saltará nuevamente. . Actualmente no hay forma de resolver este problema. Espero que los amigos que tengan una manera de resolver este problema puedan darme algunas sugerencias ~~ El editor les responderá a tiempo. También me gustaría agradecerles a todos por su apoyo. ¡Sitio web de VeVb Wulin!