Electron: كيفية منع التنقل في عرض الويب عند النقر فوق ارتباط URL

تم إنشاؤها على ٢٢ يناير ٢٠١٦  ·  3تعليقات  ·  مصدر: electron/electron

أهلا،
لقد بحثت في الجملة التالية في وثائق حدث will-navigate (https://github.com/atom/electron/blob/master/docs/api/web-view-tag.md).

استدعاء event.preventDefault () ليس له أي تأثير.

فكيف يمكننا منع عرض الويب من الانتقال إلى صفحة أخرى؟ أعتزم تشغيل المتصفح الافتراضي عندما ينقر المستخدم على رابط URL في عرض الويب.
هنا هو الكود الخاص بي في عملية العارض.

 webview.addEventListener('will-navigate', function(e) {
        e.preventDefault();
        require('electron').shell.openExternal(e.url);
 });

باستخدام هذا الرمز ، عند النقر فوق رابط URL في عرض الويب ، سينتقل عرض الويب إلى الصفحة الجديدة ويفتح المتصفح الافتراضي أيضًا لعرض الصفحة الجديدة. أريد أن يتوقف عرض الويب عن الانتقال إلى الصفحة الجديدة.

التعليق الأكثر فائدة

هذا يعمل بالنسبة لي لمنع التنقل عبر نقر المستخدم على الروابط وإخطار التطبيق بعنوان url المطلوب. باستخدام التحميل المسبق وحقن هذا:

document.addEventListener('DOMContentLoaded', function () {
  document.addEventListener('click', function (e) {
    e.preventDefault();
    e.stopPropagation();
    setTimeout(function () {
      var path = e.target.href;
      ipcRenderer.sendToHost('element-clicked', path);
    }, 100);
    return false;
  }, true);
});

يرجى ملاحظة المعلمة الثالثة في document.addEventListener('click', fn, true)

المرجع: https://stackoverflow.com/questions/6157486/jquery-trap-all-click-events-before-they-happen/6157660#6157660

ال 3 كومينتر

نسخة مكررة من # 1378.

لا أرى حل نشر؟

هذا يعمل بالنسبة لي لمنع التنقل عبر نقر المستخدم على الروابط وإخطار التطبيق بعنوان url المطلوب. باستخدام التحميل المسبق وحقن هذا:

document.addEventListener('DOMContentLoaded', function () {
  document.addEventListener('click', function (e) {
    e.preventDefault();
    e.stopPropagation();
    setTimeout(function () {
      var path = e.target.href;
      ipcRenderer.sendToHost('element-clicked', path);
    }, 100);
    return false;
  }, true);
});

يرجى ملاحظة المعلمة الثالثة في document.addEventListener('click', fn, true)

المرجع: https://stackoverflow.com/questions/6157486/jquery-trap-all-click-events-before-they-happen/6157660#6157660

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

PhilAndrew picture PhilAndrew  ·  3تعليقات

EladBezalel picture EladBezalel  ·  3تعليقات

dangan-ronpa picture dangan-ronpa  ·  3تعليقات

sindresorhus picture sindresorhus  ·  3تعليقات

christiangenco picture christiangenco  ·  3تعليقات