winform と html5 を組み合わせた小さなものを作りたかったのですが、突然興味が湧き、それに WeChat の Web バージョンを埋め込みたいと思いました。
アイデアが浮かんだらすぐに行動を起こしてください。最終的な効果は次のとおりです。
最初から、ページに iframe を埋め込んで https://wx.qq.com をポイントするつもりだったのですが、それでも大丈夫だったのですが、まだ甘かったので、WeChat の Web バージョンに自動的にジャンプしてしまいました。結果は以下のようになります。
そこで、iframe ジャンプを防ぐ方法をオンラインで探しました。それは、iframe タグに security=restrictedsandbox= という 2 つの属性を追加することです。前者はIEのjs禁止機能、後者はHTML5の機能です。
ジャンプを防ぐには、 sandbox=allow-scripts allow-same-origin allow-popups
を使用してください。ただし...結果は次のとおりです。
その後、このジャンプは実際には元のページを閉じた後にジャンプ ページを参照していることがわかりました。したがって、アンロード前にページを閉じるイベントを使用して、ジャンプを防ぐことができます。したがって、次のコードをページに追加します。
document.body.onbeforeunload = 関数 (イベント) { var rel = asdfawfewf; if (!window.event) {event.returnValue = rel; };
その後、結果がまだ次のようであることがわかりました。
理由は何ですか?事件に対する反応はありませんか?それともWeChatウェブ版のジャンプが凄すぎるのか?この事件を無視しますか?そこで、新しい空の HTML を作成し、検証のためにイベントを別に追加しました。
<!DOCTYPE html> <html lang=ja 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 = } };
結果は実現可能です:
ただし、ページに iframe を埋め込んだ後は、次のコードを試すことができます。
<!DOCTYPE html> <html lang=ja 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: ナバホホワイト;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 = } };
アイデアがなくなったときは、この方法が機能するかどうかを確認するためにオンとオフを繰り返しました。突然、ページを開いてから短期間に閉じた場合、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 style=position: 絶対;border:ナバホホワイト;左: 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; </script> </html>
結果は確かに成功です。このページを離れるかどうかを尋ねるプロンプトが表示されます。「Leave」ボタンをクリックします。成功に飛びつくことはありません。下の写真は私の完成品の写真です。
これで、通常どおりチャットやファイルの転送はできますが、スクリーンショットを撮ることはできません。
欠点は、ログインを完了するためにポップアップのキャンセル ボタンをクリックする必要があり、1 回目はページを開くとき、2 回目は QR コードをスキャンした後に再度ページがジャンプする必要があることです。 。現時点ではこの問題を解決する方法はありません。この問題を解決する方法を持っている友人が私にいくつかの提案をしてくれることを願っています~~ 編集者はすぐに返信します。また、皆さんのサポートに感謝します。 VeVb武林のウェブサイト!