Я просто хотел сделать небольшую штуку, сочетающую Winform с html5. Я внезапно заинтересовался и захотел встроить в нее веб-версию WeChat.
Ладно, как только появится идея, действуйте. Итоговый эффект следующий:
С самого начала я планировал встроить iframe в страницу и указать на https://wx.qq.com, это было бы нормально, но я был еще слишком наивен, и веб-версия WeChat автоматически перескакивала бы. Результат такой, как показано ниже:
Поэтому я поискал в Интернете способ предотвратить переходы iframe, а именно добавить два атрибута security=restrictedsandbox= в тег iframe. Первый — это функция IE, запрещающая js, а второй — функция HTML5.
Используйте sandbox=allow-scripts allow-same-origin allow-popups чтобы предотвратить переходы. Однако... результат таков:
Затем я обнаружил, что этот переход на самом деле переходит на страницу перехода после закрытия исходной страницы. Таким образом, вы можете использовать событие закрытия страницы onbeforeunload, чтобы предотвратить переход. Поэтому добавьте на страницу следующий код:
document.body.onbeforeunload = функция (событие) {вар rel = asdfawfewf; если (!window.event) { event.returnValue = rel } else { window.event.returnValue = rel } };Затем я обнаружил, что результат все еще такой:
В чем причина? Никакой реакции на инцидент? Или скачок в веб-версии WeChat слишком крут? Просто игнорировать этот инцидент? Поэтому я создал новый пустой HTML-код и добавил событие отдельно для проверки.
<!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 } еще { window.event.returnValue = rel } };Результат возможен:
Но после встраивания iframe на страницу он переходит напрямую. Вы можете попробовать следующий код.
<!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 } еще { window.event.returnValue = rel } };Когда у меня заканчивались идеи, я продолжал включать и выключать его, чтобы проверить, работает ли этот метод. Внезапно я обнаружил, что если страница будет закрыта в течение короткого периода времени после ее открытия, событие onbeforeunload не будет вызвано. После ожидания в течение нескольких секунд и последующего закрытия страницы событие будет запущено и появится приглашение. .
Давай, попробуй отложенное присвоение iframe src (здесь цитируется 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=iframeframeborder=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 = функция (событие) { var rel = asdfawfewf; если (!window.event) { event.returnValue = rel } else { window.event.returnValue = rel; </script> </html>Результат действительно успешный. Появится приглашение покинуть эту страницу. Нажмите кнопку «Выйти». Не существует прыжка к успеху. На картинке ниже изображен мой готовый продукт.
Готово. Вы можете общаться и передавать файлы в обычном режиме, но не можете делать скриншоты.
Недостаток в том, что для завершения входа нужно нажать всплывающую кнопку отмены, причем сделать это нужно дважды: первый раз, чтобы открыть страницу, а второй раз после сканирования QR-кода страница снова перейдет. . В настоящее время нет способа решить эту проблему. Надеюсь, друзья, у которых есть способ решить эту проблему, дадут мне несколько советов~~ Редактор ответит вам вовремя. Я также хотел бы поблагодарить всех вас за поддержку. Сайт VeVb Wulin!