그냥 winform과 html5를 결합한 작은 것을 만들고 싶었어요. 갑자기 관심이 생겨서 거기에 WeChat 웹 버전을 포함시키고 싶었어요.
좋아요, 아이디어가 떠오르자마자 행동을 취하세요. 최종 효과는 다음과 같습니다.
처음부터 페이지에 iframe을 삽입하고 https://wx.qq.com을 가리키도록 하려고 했는데, 그래도 너무 순진해서 위챗 웹 버전이 자동으로 점프하게 됐습니다. 결과는 아래와 같습니다.
그래서 iframe 점프를 방지하는 방법을 온라인에서 검색했습니다. iframe 태그에 security=restrictedsandbox= 속성 두 개를 추가하는 것이었습니다. 전자는 js를 금지하는 IE의 기능이고, 후자는 HTML5의 기능이다.
점프를 방지하려면 sandbox=allow-scripts allow-same-origin allow-popups
사용하세요. 그런데... 결과는 이렇습니다.
그러다가 이 점프가 실제로 원래 페이지를 닫은 후 점프 페이지를 탐색하고 있다는 것을 발견했습니다. 따라서 점프를 방지하기 위해 onbeforeunload에서 페이지 닫기 이벤트를 사용할 수 있습니다. 따라서 페이지에 다음 코드를 추가하세요.
document.body.onbeforeunload = 함수(이벤트) { var rel = asdfawfewf; if(!window.event) { event.returnValue = rel; } else { window.event.returnValue = } };
그런 다음 결과가 여전히 다음과 같다는 것을 알았습니다.
이유는 무엇입니까? 사건에 대한 반응이 없나요? 아니면 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 = 함수(이벤트) { var rel = asdfawfewf; if (!window.event) { event.returnValue = rel; } else { window.event.returnValue = } };
결과는 가능합니다.
하지만 페이지에 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: 절대;border: navajowhite;왼쪽: 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 = } };
아이디어가 부족할 때 이 방법이 효과가 있는지 확인하기 위해 계속 켰다가 껐습니다. 갑자기 페이지가 열린 후 짧은 시간 내에 닫히면 onbeforeunload 이벤트가 트리거되지 않는다는 것을 발견했습니다. 몇 초 동안 기다렸다가 페이지를 닫으면 이벤트가 트리거되고 프롬프트가 나타납니다. .
와서 src에 대한 iframe 지연 할당을 시도해 보세요(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 스타일=위치: 절대;경계: navajowhite;왼쪽: 0;높이: calc(100% - 30px);너비:100%> </iframe> </body> <script> $(function () { setTimeout(function () { iframe.src = https: //wx.qq.com/; },5000); }) document.body.onbeforeunload = 함수(이벤트) { var rel = asdfawfewf; if (!window.event) { event.returnValue = rel; } else { window.event.returnValue = } };
결과는 실제로 성공했습니다. 이 페이지를 떠날 것인지 묻는 메시지가 나타납니다. 나가기 버튼을 클릭하세요. 성공에는 도약이 없습니다. 아래 사진은 제가 완성한 제품 사진입니다.
완료되었습니다. 정상적으로 채팅하고 파일을 전송할 수 있지만 스크린샷을 찍을 수는 없습니다.
단점은 로그인을 완료하려면 팝업 취소 버튼을 클릭해야 하고, 처음 페이지를 열 때와 두 번째 QR 코드를 스캔하면 페이지가 다시 이동한다는 점입니다. . 현재로서는 이 문제를 해결할 수 있는 방법이 없습니다. 이 문제를 해결할 수 있는 방법이 있는 친구가 제게 몇 가지 제안을 해주기를 바랍니다~~ 시간이 지나면 편집자가 답변해 드릴 것입니다. VeVb 무림 홈페이지!