أردت فقط أن أصنع شيئًا صغيرًا يجمع بين winform وhtml5، وفجأة أصبحت مهتمًا وأردت تضمين نسخة ويب WeChat فيه.
حسنًا، بمجرد ظهور الفكرة، اتخذ إجراءً، وسيكون التأثير النهائي كما يلي:
منذ البداية، خططت لتضمين إطار iframe في الصفحة والإشارة إلى https://wx.qq.com، وهو أمر لا بأس به، لكنني كنت لا أزال ساذجًا للغاية، وسوف يقفز إصدار الويب WeChat تلقائيًا. النتيجة كما هو موضح أدناه:
لذلك بحثت عبر الإنترنت عن طريقة لمنع قفزات iframe، وهي إضافة السمتين Security=restrictedsandbox= إلى علامة iframe. الأولى هي وظيفة IE التي تحظر js، والأخيرة هي وظيفة HTML5.
استخدم sandbox=allow-scripts allow-same-origin allow-popups
لمنع القفزات. لكن...النتيجة هي كالتالي:
ثم اكتشفت أن هذه القفزة هي في الواقع تصفح لصفحة الانتقال بعد إغلاق الصفحة الأصلية. لذا يمكنك استخدام حدث إغلاق الصفحة قبل التفريغ لمنع القفزة. لذا قم بإضافة الكود التالي إلى الصفحة:
document.body.onbeforeunload = function (event) { var rel = asdfawfewf; if (!window.event) { events.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 = function (event) { var rel = asdfawfewf; rel } else { 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: مطلق;border: navajowhite;left: 0;height: calc(100% - 30px);width:100%> </iframe> </body> <script> document.body.onbeforeunload = function (event) { var rel = asdfawfewf; else { 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 = function (event) { var rel = asdfawfewf;
والنتيجة ناجحة بالفعل وستظهر مطالبة بمغادرة هذه الصفحة. ليس هناك قفزة على النجاح. الصورة أدناه هي صورة للمنتج النهائي الخاص بي.
لقد انتهيت، يمكنك الدردشة ونقل الملفات بشكل طبيعي، ولكن لا يمكنك التقاط لقطات الشاشة.
العيب هو أنك تحتاج إلى النقر فوق زر الإلغاء المنبثق لإكمال تسجيل الدخول، ويجب القيام بذلك مرتين في المرة الأولى لفتح الصفحة، وفي المرة الثانية بعد مسح رمز الاستجابة السريعة، ستقفز الصفحة مرة أخرى . لا توجد حاليًا طريقة لحل هذه المشكلة، آمل أن يقدم لي الأصدقاء الذين لديهم طريقة لحل هذه المشكلة بعض الاقتراحات ~~ سيقوم المحرر بالرد عليك في الوقت المناسب، وأود أيضًا أن أشكركم جميعًا على دعمكم لـ موقع VeVb وولين!