كل الملاحظات

Design mode

سطر واحد في الـ console يحوّل أي صفحة ويب لمسودة تقدر تكتب فيها مباشرةً، من غير ما تلمس الكود.

ما هو designMode ؟

document.designMode خاصية (property) في الـ document، ظهرت أول مرة في Internet Explorer أواخر التسعينات، ثم أصبحت جزءاً من معيار HTML5، وهي مدعومة اليوم في كل المتصفحات: Chrome و Firefox و Safari و Edge.

عند تفعيلها بـ "on" تصبح الصفحة كلها قابلة للتعديل: تكتب وتمسح وتغيّر أي نص فيها مباشرةً، كأن كل عنصر عليه contenteditable.

متى تحتاجه؟

  • كل التعديلات دفعة واحدة: بدل ما تكتب للـ AI كل تعديل على حدة، عدّل كل النصوص في الصفحة مباشرةً، ثم انسخ النتيجة وأعطها للـ AI ليطبّقها في الكود مرة واحدة.
  • تجربة سريعة للنصوص: تغيّر جملة، تحذف صورة، أو تحوّل كلمة من العربي للإنجليزي، وتشوف شكلها في الصفحة فوراً. أسرع من طلبها من الـ AI، خصوصاً لو بتقارن بين اقتراحات كتير.
  • كشف الأخطاء الإملائية: مع تفعيل الـ designMode يشتغل المدقق الإملائي في المتصفح على نصوص الصفحة، فتظهر الكلمات الخاطئة بخط أحمر بعد ما تضغط داخل النص.

الكود والاستخدام

اكتب في الـ Console أو في ملف JavaScript:

document.designMode = "on";  // turn on
document.designMode = "off"; // turn off
// onoff wnta btklmny xD

التعديلات مؤقتة، وتختفي بمجرد تحديث الصفحة (refresh).

حلول أخرى

أ. إضافة كـ Bookmark

اعمل bookmark جديد (Ctrl + D)، وفي خانة الـ URL امسح الرابط وضيف الكود ده مكانه.

javascript:(() => {
  document.designMode = document.designMode === "on" ? "off" : "on";
})()

الكود بيعمل toggle للـ designMode: لو شغال يقفله، ولو مقفول يشغّله.

ب. Extensions جاهزة

حدود الـ designMode

كل iframe عبارة عن document مستقل، فلما تشغّل document.designMode في الصفحة الأساسية، ده بيأثر على الـ document بتاعها بس.

1. استخدم $0

عن طريق Inspect (فحص العنصر) اختار الـ <iframe>، وبعدين في الـ console هنكتب $0، وهو اختصار لآخر عنصر اخترته في Elements:

$0.contentDocument.designMode = "on";

// or
$0.contentDocument.body.contentEditable = "true";

2. غيّر الـ context من الـ Console

الطريقة دي بنستخدمها لو الـ iframe من origin تاني. فوق الـ console فيه قائمة مكتوب فيها top، ودي بتحدد الـ document اللي الكود هيشتغل فيه. اختار منها الـ iframe، وبعدين شغّل السطر العادي:

document.designMode = "on"; // now runs inside the iframe

ولو اخترت أي عنصر جوه الـ iframe من تبويب Elements، الـ console بيتنقل لنفس الـ iframe تلقائياً.

أفضل الممارسات

1. استخدم الـ right click مع اللينكات والأزرار

الضغط العادي على لينك أو زرار بينفّذه (ينقلك لصفحة تانية أو يشغّل الـ action بتاعه) بدل ما يحط المؤشر جواه. الـ right click بيحط المؤشر جوه النص من غير ما ينفّذ حاجة، فتقدر تعدّل عليه بأمان.

2. متمسحش النص كله

لو مسحت كل النص اللي جوه عنصر، العنصر نفسه بيتمسح معاه، ومعاه التنسيق بتاعه. سيب حرف أو نقطة، واكتب النص الجديد، وبعدين امسح الحرف الزيادة.

3. لو قائمة الـ right click مضايقاك

اقفلها من الـ console:

document.addEventListener("contextmenu", (e) => e.preventDefault());

4. أو اقفل كل اللينكات والأزرار

بدل الـ right click، امنع أي لينك أو زرار إنه يشتغل لما تضغط عليه، فتقدر تعدّل عليه بالضغط العادي:

document.addEventListener("click", (e) => {
  if (e.target.closest("a, button")) {
    e.preventDefault();  // links don't navigate
    e.stopPropagation(); // buttons don't run their actions
  }
}, true);

الإعدادين بيرجعوا لطبيعتهم مع أول refresh للصفحة.

سبتمبر 2026