أهلا،
لقد بحثت في الجملة التالية في وثائق حدث 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 في عرض الويب ، سينتقل عرض الويب إلى الصفحة الجديدة ويفتح المتصفح الافتراضي أيضًا لعرض الصفحة الجديدة. أريد أن يتوقف عرض الويب عن الانتقال إلى الصفحة الجديدة.
نسخة مكررة من # 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)
التعليق الأكثر فائدة
هذا يعمل بالنسبة لي لمنع التنقل عبر نقر المستخدم على الروابط وإخطار التطبيق بعنوان url المطلوب. باستخدام التحميل المسبق وحقن هذا:
يرجى ملاحظة المعلمة الثالثة في
document.addEventListener('click', fn, true)
المرجع: https://stackoverflow.com/questions/6157486/jquery-trap-all-click-events-before-they-happen/6157660#6157660