ØªØ¤Ø¯Ù Ø§ÙØ¹Ø¯Ùد Ù Ù Ø§ÙØ£ØØ¯Ø§Ø« تÙÙØ§Ø¦ÙÙØ§ Ø¥Ù٠إجراءات ٠عÙÙØ© ÙÙÙÙ Ø¨ÙØ§ اÙÙ ØªØµÙØ.
:عÙ٠سبÙ٠اÙ٠ثاÙ
- اÙÙÙØ± عÙ٠رابط â ÙØ¨Ø¯Ø£ Ø§ÙØ§ÙØªÙØ§Ù Ø¥ÙÙ URL Ø§ÙØ®Ø§Øµ بÙ.
- اÙÙÙØ± عÙ٠زر إرسا٠اÙÙÙ ÙØ°Ø¬ â ÙØ¨Ø¯Ø£ ØªÙØ¯ÙÙ Ø§ÙØ¨ÙØ§ÙØ§Øª Ø¥ÙÙ Ø§ÙØ®Ø§Ø¯Ù server.
- اÙÙÙØ± عÙ٠زر اÙÙ Ø§ÙØ³ ÙÙ٠اÙÙØµ ٠ع Ø§ÙØØ±ÙØ© â ÙÙÙÙ Ø¨ØªØØ¯Ùد اÙÙØµ.
إذا تعا٠ÙÙØ§ ٠ع ØØ¯Ø« ÙÙ Ø§ÙØ¬Ø§Ùا Ø§Ø³ÙØ±Ùبت Ø ÙÙ ÙÙ Ø£ÙØ§ ÙØ±ØºØ¨ Ù٠تÙÙÙØ° إجراء اÙÙ ØªØµÙØ اÙÙ ÙØ§Ø¨Ù ÙÙØ°Ø§ Ø§ÙØØ¯Ø« Ø ÙÙØ±Ùد تÙÙÙØ° سÙÙ٠آخر Ø¨Ø¯ÙØ§Ù ٠٠ذÙÙ.
Ù ÙØ¹ إجراءات اÙÙ ØªØµÙØ
:ÙÙØ§Ù طرÙÙØªØ§Ù ÙØ¥Ø®Ø¨Ø§Ø± اÙÙ ØªØµÙØ Ø£ÙÙØ§ ÙØ§ ÙØ±ÙØ¯Ù Ø£Ù ÙØ¹Ù Ù
- Ø§ÙØ·Ø±ÙÙØ© Ø§ÙØ±Ø¦ÙØ³ÙØ© Ù٠استخداÙ
ÙØ§Ø¦Ù Ø§ÙØØ¯Ø«
event. ÙÙØ§Ù طرÙÙØ©event.preventDefault(). - إذا تÙ
تعÙÙ٠اÙÙ
Ø¹Ø§ÙØ¬ handler باستخداÙ
on<event>(ÙÙÙØ³ ع٠طرÙÙaddEventListener)Ø Ø¹ÙØ¯Ø¦Ø° ÙØ¥Ù ارجاع اÙÙÙÙ Ø©falseÙØ¹Ù ٠بÙÙØ³ Ø§ÙØ·Ø±ÙÙØ©.
:ÙÙ ÙØ°Ù Ø§ÙØµÙØØ© اÙÙÙØ± عÙÙ Ø§ÙØ±Ø§Ø¨Ø· ÙØ§ ÙØ¤Ø¯Ù Ø¥ÙÙ Ø§ÙØªÙÙÙØ ÙÙØ§ ÙÙÙ٠اÙÙ ØªØµÙØ Ø¨Ø£Ù Ø´ÙØ¦
<a href="/" onclick="return false">Click here</a>
Ø£Ù
<a href="/" onclick="event.preventDefault()">here</a>
.Ù٠اÙÙ Ø«Ø§Ù Ø§ÙØªØ§ÙÙ Ø³ÙØ³ØªØ®Ø¯Ù ÙØ°Ù Ø§ÙØªÙÙÙØ© ÙØ¥Ùشاء ÙØ§Ø¦Ù Ø© ٠دعÙÙ Ø© Ù Ù Ø§ÙØ¬Ø§Ùا Ø§Ø³ÙØ±Ùبت
false Ù
Ù Ù
Ø¹Ø§ÙØ¬ ÙØ¹Ø¯ Ø§Ø³ØªØ«ÙØ§Ø¡Ø¹Ø§Ø¯Ø©Ù ٠ا ÙØªÙ تجاÙ٠اÙÙÙÙ Ø© Ø§ÙØªÙ ÙØªÙ Ø¥Ø±Ø¬Ø§Ø¹ÙØ§ Ø¨ÙØ§Ø³Ø·Ø© Ù Ø¹Ø§ÙØ¬ Ø§ÙØ£ØØ¯Ø§Ø«.
Ø§ÙØ§Ø³ØªØ«Ùاء اÙÙØÙØ¯ Ù٠إرجاع false Ù
Ù Ù
Ø¹Ø§ÙØ¬ Ù
خصص باستخداÙ
on<event>.
ÙÙ ÙÙ Ø§ÙØØ§ÙØ§Øª Ø§ÙØ£Ø®Ø±Ù Ø Ø¥Ø±Ø¬Ø§Ø¹ ÙÙÙ
Ø© ÙØªÙ
تجاÙÙÙ. بشÙÙ Ø®Ø§ØµØ ÙØ§ Ù
عÙÙ Ù
٠إرجاع ÙÙÙ
Ø© true.
٠ثاÙ: اÙÙØ§Ø¦Ù Ø©
:ÙØ§Ø¦Ù Ø© Ù ÙÙØ¹ Ù Ø«Ù ÙØ°Ù
<ul id="menu" class="menu">
<li><a href="/html">HTML</a></li>
<li><a href="/javascript">JavaScript</a></li>
<li><a href="/css">CSS</a></li>
</ul>
ÙÙÙØ°Ø§ ØªØ¨Ø¯Ù Ø¨Ø¥Ø¶Ø§ÙØ© CSS:
Ø¹ÙØ§ØµØ± اÙÙØ§Ø¦Ù
Ø© Ù
ستخدÙ
Ø© Ù <a>Ø ÙÙÙØ³ أزرار <button>. :ÙÙØ§Ù عدة أسباب ÙÙØ¹Ù ذÙÙØ عÙ٠سبÙ٠اÙÙ
ثاÙ
- Ø§ÙØ¹Ø¯Ùد Ù
Ù Ø§ÙØ£Ø´Ø®Ø§Øµ ÙÙØ¶ÙÙ٠استخداÙ
âright clickâ â âopen in a new windowâ. إذا استخدÙ
ÙØ§
<button>Ø£Ù<span>Ø ÙÙ ÙØ³ØªØ·Ùع ÙØ¹Ù ذÙÙ. - تتبع Ù
ØØ±Ùات Ø§ÙØ¨ØØ«
<a href="...">Ø§ÙØ±Ùابط Ø£Ø«ÙØ§Ø¡ اÙÙÙØ±Ø³Ø©.
ÙØ°ÙÙ ÙØ³ØªØ®Ø¯Ù
<a> ÙÙ Ø§ÙØªØ±Ù
ÙØ².ÙÙÙÙØ§ Ø¹Ø§Ø¯Ø©Ù ÙØ¹ØªØ²Ù
Ø§ÙØªØ¹Ø§Ù
Ù Ù
ع اÙÙÙØ±Ø§Øª ÙÙ Ø§ÙØ¬Ø§Ùا Ø§Ø³ÙØ±Ùبت. ÙØ°ÙÙ ÙØ¬Ø¨ عÙÙÙØ§ Ù
ÙØ¹ إجراء اÙÙ
ØªØµÙØ Ø§ÙØ§ÙتراضÙ.
:Ù Ø«Ù٠ا ÙÙ Ø§ÙØØ§Ù ÙÙØ§
menu.onclick = function(event) {
if (event.target.nodeName != 'A') return;
let href = event.target.getAttribute('href');
alert( href ); // ...ÙÙ
Ù٠تØÙ
ÙÙÙ Ù
Ù Ø§ÙØ®Ø§Ø¯Ù
Ø ÙØ¥Ùشاء ÙØ§Ø¬ÙØ© اÙÙ
ستخدÙ
ÙÙ
ا Ø¥Ù٠ذÙÙ
return false; // Ù
ÙØ¹ إجراء اÙÙ
ØªØµÙØ (ÙØ§ ØªØ°ÙØ¨ Ø¥ÙÙ URL)
};
إذا ØØ°ÙÙØ§ إرجاع خطأ Ø ÙØ¨Ø¹Ø¯ تÙÙÙØ° اÙÙÙØ¯ Ø§ÙØ®Ø§Øµ Ø¨ÙØ§ Ø Ø³ÙÙÙÙ
اÙÙ
ØªØµÙØ بتÙÙÙØ° Ø§ÙØ¥Ø¬Ø±Ø§Ø¡ Ø§ÙØ§ÙØªØ±Ø§Ø¶Ù â Ø§ÙØ§ÙØªÙا٠إÙ٠عÙÙØ§Ù URL ÙÙ href. ÙÙØ³Ùا Ø¨ØØ§Ø¬Ø© Ø¥Ù٠ذÙÙ ÙÙØ§ Ø ÙØ£ÙÙØ§ ÙØªØ¹Ø§Ù
Ù Ù
ع اÙÙÙØ± بأÙÙØ³Ùا.
باÙÙ ÙØ§Ø³Ø¨Ø© استخدا٠تÙÙÙØ¶ Ø§ÙØØ¯Ø« event delegation ÙØ¬Ø¹Ù ÙØ§Ø¦Ù ØªÙØ§ Ù Ø±ÙØ© ÙÙØºØ§ÙØ©. ÙÙ ÙÙÙØ§ Ø¥Ø¶Ø§ÙØ© ÙÙØ§Ø¦Ù Ù ØªØ¯Ø§Ø®ÙØ© ÙØªØµÙ ÙÙ ÙØ§ باستخدا٠CSS âslide down ÙÙØ§ÙØ²ÙØ§Ù Ø¥Ù٠أسÙÙâ.
Ø£ØØ¯Ø§Ø« ٠عÙÙØ© تتدÙÙ Ø¨Ø¹Ø¶ÙØ§ Ø¥Ù٠أخرÙ. إذا Ù ÙØ¹Ùا Ø§ÙØØ¯Ø« Ø§ÙØ£ÙÙ Ø ÙÙÙ ÙÙÙÙ ÙÙØ§Ù ثاÙÙ. إذا Ù ÙØ¹Ùا Ø§ÙØØ¯Ø« Ø§ÙØ£ÙÙ Ø ÙÙ ÙØµØ¨Ø ÙÙØ§ÙÙ ØØ¯Ø« ثاÙÙ.
عÙ٠سبÙ٠اÙÙ
Ø«Ø§Ù Ø mousedownÙÙ ØÙÙ <input> ÙØ¤Ø¯Ù Ø¥ÙÙ Ø§ÙØªØ±ÙÙØ² عÙÙÙ ÙØØ¯ÙØ« ØØ¯Ø« focus. إذا Ù
ÙØ¹Ùا ØØ¯Ø« mousedown ÙÙ ÙØØ¯Ø« focus.
جرب Ø£Ù ÙÙØ± عÙ٠أÙÙ <input> Ø¨Ø§ÙØ£Ø³ÙÙ â focus ÙØØ¯Ø« Ø§ÙØØ¯Ø«. ÙÙ٠إذا ÙÙ
ت باÙÙÙØ± عÙÙ Ø§ÙØ«Ø§ÙÙ ÙÙÙ ÙØØ¯Ø« focus.
<input value="Focus works" onfocus="this.value=''">
<input onmousedown="return false" onfocus="this.value=''" value="Click me">
ÙØ°Ø§ بسبب Ø¥ÙØºØ§Ø¡ إجراء اÙÙÙ
ØªØµÙØ ÙÙ mousedown. ÙØ§ ÙØ²Ø§Ù Ø§ÙØªØ±ÙÙØ² Ù
Ù
ÙÙØ§Ù إذا ÙÙ
ÙØ§ استخدÙ
ÙØ§ طرÙÙØ© Ø£Ø®Ø±Ù ÙØ¥Ø¯Ø®Ø§Ù اÙÙ
Ø¯Ø®ÙØ§Øª. عÙ٠سبÙ٠اÙÙ
ثا٠ØTab key ÙÙØªØ¨Ø¯ÙÙ Ù
Ù Ø§ÙØ¥Ø¯Ø®Ø§Ù Ø§ÙØ£Ù٠إÙÙ Ø§ÙØ«Ø§ÙÙ. ÙÙÙÙ ÙÙØ³ Ù
ع اÙÙÙØ± باÙÙ
Ø§ÙØ³ بعد Ø§ÙØ¢Ù.
passive "Ø®ÙØ§Ø± اÙ٠عا٠٠"Ø§ÙØ®Ø§Ù Ù
Ø§ÙØ§Ø®ØªÙار Ø§ÙØºÙر Ø¥ÙØ²Ø§Ù
Ù passive: true Ø®ÙØ§Ø± addEventListener ÙØ´Ùر Ø¥Ù٠اÙÙ
ØªØµÙØ بأ٠اÙÙ
Ø¹Ø§ÙØ¬ ÙÙ ÙØ³ØªØ¯Ø¹Ù Ø§ÙØ£Ù
ر preventDefault().
Ù٠اذا ÙØ¯ تÙÙÙ ÙÙØ§Ù ØØ§Ø¬Ø© ÙØ°ÙÙØ
ÙÙØ§Ù بعض Ø§ÙØ£ØØ¯Ø§Ø« Ù
ث٠touchmove عÙÙ Ø£Ø¬ÙØ²Ø© اÙÙ
ØÙ
ÙÙ (Ø¹ÙØ¯Ù
ا ÙØØ±Ù Ø§ÙÙ
ستخدÙ
إصبع٠عبر Ø§ÙØ´Ø§Ø´Ø©)Ø ÙØ°Ø§ ÙØªØ³Ø¨Ø¨ ÙÙ scrolling Ø§ÙØªØ±Ø§Ø¶Ù Ø ÙÙÙÙ ÙÙ
ÙÙ Ù
ÙØ¹ ÙØ°Ø§ باستخداÙ
PreventionDefault () Ù٠اÙÙ
Ø¹Ø§ÙØ¬.
ÙØ°Ø§ Ø¹ÙØ¯Ù
ا ÙÙØªØ´Ù اÙÙ
ØªØµÙØ ØØ¯Ø«Ø§Ù ÙÙØ°Ø§Ø ØªØØªØ§Ø¬ ÙÙ Ø§ÙØ¨Ø¯Ø§ÙØ© Ø¥ÙÙ Ø§ÙØ¹Ù
٠عÙÙ Ù٠اÙÙ
Ø¹Ø§ÙØ¬Ø§ØªØ Ø«Ù
إذا ÙÙ
ÙØªÙ
Ù
ÙØ§Ø¯Ø§Ø© preventDefaultÙ٠أ٠Ù
ÙØ§ÙØ ÙÙ
Ù٠أ٠تستÙ
ر Ù
ع scrolling. ÙØ¯ ÙØªØ³Ø¨Ø¨ ÙØ°Ø§ ÙÙ ØªØ£Ø®ÙØ±Ø§Øª ÙØ§ داع٠ÙÙØ§ âjittersâ ÙÙ UI.
Ø§ÙØ®Ùار passive: true ÙØ®Ø¨Ø± اÙÙ
ØªØµÙØ أ٠اÙÙ
Ø¹Ø§ÙØ¬ ÙÙ ÙÙÙÙ
Ø¨Ø¥ÙØºØ§Ø¡ scrolling. بعد ذÙÙ ÙÙÙÙ
اÙÙ
ØªØµÙØ ÙÙØ±Ø§Ù Ø¨Ø§ÙØØ±ÙØ© scroll Ù
ÙØ¯Ù
ا٠بذÙÙ Ø£ÙØµÙ تجربة Ø³ÙØ³Ø©Ø ÙÙØªÙ
Ø§ÙØªØ¹Ø§Ù
Ù Ù
ع Ø§ÙØØ¯Ø« .
باÙÙØ³Ø¨Ø© ÙØ¨Ø¹Ø¶ اÙÙ
ØªØµÙØØ§Øª (FirefoxØ Chrome)Ø passive ÙÙÙÙtrue بشÙÙ Ø§ÙØªØ±Ø§Ø¶Ù ÙØØ¯Ø« touchstart Ù touchmove.
event.defaultPrevented
Ø§ÙØ®Ø§ØµÙØ© event.defaultPrevented تÙÙ٠صØÙØØ© إذا تÙ
Ù
ÙØ¹ Ø§ÙØ¥Ø¬Ø±Ø§Ø¡ Ø§ÙØ§ÙØªØ±Ø§Ø¶ÙØ ٠تÙÙ٠خطأ ÙÙ Ø§ÙØØ§ÙØ© اÙÙ
ØºØ§ÙØ±Ø©.
ÙÙØ§Ù ØØ§ÙØ© Ø§Ø³ØªØ®Ø¯Ø§Ù Ù Ø«ÙØ±Ø© ÙÙØ§ÙØªÙ Ø§Ù ÙØ°ÙÙ.
ÙÙ ØªØªØ°ÙØ± ÙÙ ÙØµÙ Ø§ÙØªØ¯ÙÙ Ù Ø§ÙØ¥ÙØªÙØ§Ø· ØªØØ¯Ø«Ùا ع٠event.stopPropagation() Ø£Ù
ر Ø³ÙØ¦Ø bubbling ÙÙÙ
اذا Ø¥ÙÙØ§Ù
Ø¨Ø¯ÙØ§Ù Ù
٠ذÙ٠أØÙØ§ÙØ§Ù ÙÙ
ÙÙÙØ§ استخداÙ
event.defaultPreventedØ ÙÙØ¥Ø´Ø§Ø±Ø© Ø¥ÙÙ Ù
Ø¹Ø§ÙØ¬Ø§Øª Ø§ÙØ£ØØ¯Ø§Ø« Ø§ÙØ£Ø®Ø±Ù بأÙ٠تÙ
Ø§ÙØªØ¹Ø§Ù
Ù Ù
ع Ø§ÙØØ¯Ø«.
ÙÙØ±Ù Ù Ø«Ø§ÙØ§Ù ع٠ÙÙØ§Ù.
اÙÙ
ØªØµÙØ Ø§ÙØªØ±Ø§Ø¶Ùا٠ÙÙ ØØ¯Ø«contextmenu (اÙÙÙØ± عÙÙ Ø§ÙØ²Ø± Ø§ÙØ£ÙÙ
Ù ÙÙÙØ£Ø±Ø©) ÙØ¹Ø±Ø¶ context menu Ø¨Ø®ÙØ§Ø±Ø§Øª ÙÙØ§Ø³ÙØ©. ÙÙ
ÙÙÙØ§ Ù
ÙØ¹ :ذÙÙ ÙØ¥Ø¸Ùار اÙÙØ§Ø¦Ù
Ø© Ø§ÙØ®Ø§ØµØ©Ø¨ÙØ§Ø Ù
Ø«Ù
<button>Right-click shows browser context menu</button>
<button oncontextmenu="alert('Draw our menu'); return false">
Right-click shows our context menu
</button>
Ø§ÙØ¢Ù Ø Ø¨Ø§ÙØ¥Ø¶Ø§ÙØ© Ø¥ÙÙ ÙØ§Ø¦Ù Ø© Ø§ÙØ³ÙØ§Ù ÙØ°Ù Ø ÙÙØ¯ تÙÙÙØ° ÙØ§Ø¦Ù Ø© Ø§ÙØ³Ùا٠عÙ٠٠ستÙ٠اÙÙ Ø³ØªÙØ¯.
Ø¹ÙØ¯ اÙÙÙØ± بزر اÙÙ Ø§ÙØ³ Ø§ÙØ£ÙÙ Ù Ø ÙØ¬Ø¨ Ø£Ù ØªØ¸ÙØ± Ø£ÙØ±Ø¨ ÙØ§Ø¦Ù Ø© Ø³ÙØ§Ù.
<p>Right-click here for the document context menu</p>
<button id="elem">Right-click here for the button context menu</button>
<script>
elem.oncontextmenu = function(event) {
event.preventDefault();
alert("Button context menu");
};
document.oncontextmenu = function(event) {
event.preventDefault();
alert("Document context menu");
};
</script>
اÙÙ
Ø´ÙÙØ© ÙÙØ§ Ø£ÙÙ Ø¹ÙØ¯ اÙÙÙØ± عÙÙ elemØ ÙØØµÙ Ø¹ÙÙ ÙØ§Ø¦Ù
تÙÙ: Ù
ستÙÙ Ø§ÙØ²Ø± button-level Ù (the event bubbles up) اÙÙØ§Ø¦Ù
Ø© عÙÙ Ù
ستÙ٠اÙÙ
Ø³ØªÙØ¯.
ÙÙÙ ÙØµÙØ Ø°ÙÙØ Ø£ØØ¯ Ø§ÙØÙÙÙ ÙÙ Ø§ÙØªÙÙÙØ± Ù
Ø«Ù: âØ¹ÙØ¯Ù
ا ÙØªØ¹Ø§Ù
Ù Ù
ع اÙÙÙØ± بزر اÙÙ
Ø§ÙØ³ Ø§ÙØ£ÙÙ
Ù ÙÙ Ù
Ø¹Ø§ÙØ¬ Ø§ÙØ²Ø± Ø ÙÙÙØªÙÙ٠ع٠اÙÙÙØ§Ø¹Ø©â ÙÙÙØ³ØªØ®Ø¯Ù
event.stopPropagation():
<p>Right-click for the document menu</p>
<button id="elem">Right-click for the button menu (fixed with event.stopPropagation)</button>
<script>
elem.oncontextmenu = function(event) {
event.preventDefault();
event.stopPropagation();
alert("Button context menu");
};
document.oncontextmenu = function(event) {
event.preventDefault();
alert("Document context menu");
};
</script>
Ø§ÙØ¢Ù ØªØ¹Ù Ù ÙØ§Ø¦Ù Ø© ٠ستÙÙ Ø§ÙØ²Ø± عÙ٠اÙÙØÙ Ø§ÙÙ Ø·ÙÙØ¨. ÙÙ٠تÙÙÙØ© ذÙ٠عاÙÙØ©. ÙØÙ ÙØ±Ùض Ø¥ÙÙ Ø§ÙØ£Ø¨Ø¯ اÙÙØµÙ٠إÙ٠٠عÙÙ٠ات ØÙ٠اÙÙÙØ±Ø§Øª Ø§ÙØµØÙØØ© ÙØ£Ù ر٠ز Ø®Ø§Ø±Ø¬Ù Ø Ø¨Ù Ø§ Ù٠ذÙÙ Ø§ÙØ¹Ø¯Ø§Ø¯Ø§Øª Ø§ÙØªÙ تج٠ع Ø§ÙØ¥ØØµØ§Ø¡Ø§Øª Ù٠ا Ø¥Ù٠ذÙÙ. ÙØ°Ø§ أ٠ر ØºÙØ± ØÙÙÙ .
Ø§ÙØÙ Ø§ÙØ¨Ø¯ÙÙ ÙÙ Ø§ÙØªØÙÙ Ù
Ù Ù
Ø¹Ø§ÙØ¬ اÙÙ
Ø³ØªÙØ¯ . إذا Ù
ا تÙ
Ù
ÙØ¹ Ø§ÙØ¥Ø¬Ø±Ø§Ø¡ Ø§ÙØ§ÙØªØ±Ø§Ø¶ÙØ إذا ÙØ§Ù ÙØ°Ù٠إذا٠ÙÙØ¯ تÙ
Ø§ÙØ¹Ø§Ù
Ù Ù
ع Ø§ÙØØ¯Ø« ÙÙØ³Ùا Ø¨ØØ§Ø¬Ø© ÙÙØ±Ø¯ عÙÙÙ.
<p>Right-click for the document menu (added a check for event.defaultPrevented)</p>
<button id="elem">Right-click for the button menu</button>
<script>
elem.oncontextmenu = function(event) {
event.preventDefault();
alert("Button context menu");
};
document.oncontextmenu = function(event) {
if (event.defaultPrevented) return;
event.preventDefault();
alert("Document context menu");
};
</script>
ÙØ§ÙØ¢Ù ÙÙ Ø´ÙØ¦ ÙØ¹Ù
٠بشÙ٠صØÙØ. Ø¥Ø°Ø§ÙØ§Ù ÙØ¯ÙÙØ§ Ø¹ÙØ§ØµØ± Ù
ØªØ¯Ø§Ø®ÙØ© nested elementsØ ÙÙÙÙ Ù
ÙÙÙ
ÙØ§Ø¦Ù
Ø© Ø³ÙØ§Ù خاصة Ø¨ÙØ ÙØ°Ù٠سÙÙ ÙØ¹Ù
Ù Ø£ÙØ¶Ø§Ù. ÙÙØ· ØªØ£ÙØ¯ Ù
Ù Ø§ÙØªØÙÙ Ù
Ù event.defaultPrevented ÙÙ ÙÙ Ù
Ø¹Ø§ÙØ¬ contextmenu.
ÙÙ
ا ÙØ±Ù Ø¨ÙØ¶ÙØØ event.stopPropagation() Ù event.preventDefault() (اÙÙ
عرÙÙ Ø£ÙØ¶Ø§Ù ب return false) ÙÙ
ا Ø´ÙØ¦Ø§Ù Ù
ختÙÙØ§Ù. ÙØ§ ÙØ±ØªØ¨Ø·Ø§Ù ببعضÙÙ
ا Ø§ÙØ¨Ø¹Ø¶.
ÙÙØ§Ù Ø£ÙØ¶Ø§Ù طر٠بدÙÙØ© ÙØªÙÙÙØ° ÙÙØ§Ø¦Ù
Ø§ÙØ³Ùا٠اÙÙ
ØªØ¯Ø§Ø®ÙØ© nested context menus. ÙØ§ØØ¯Ø© Ù
ÙÙ Ù٠أ٠ÙÙÙÙ ÙØ¯ÙÙ ÙØ§Ø¦Ù ÙØ§ØØ¯ Ù
Ø¹Ø§ÙØ¬ Ù document.oncontextmenuØ ÙØ·Ø±Ù أخر٠تسÙ
Ø ÙØ§ بتخزÙÙ Ù
Ø¹Ø§ÙØ¬Ø§Øª handlers أخر٠ÙÙÙ.
سÙÙ ÙÙØªÙØ· اÙÙØ§Ø¦Ù Ø£Ù ÙÙØ±Ø© بزر اÙÙ Ø§ÙØ³ Ø§ÙØ£ÙÙ Ù Ø ÙÙÙØ¸Ø± Ø®ÙØ§Ù اÙÙ Ø¹Ø§ÙØ¬Ø§Øª اÙÙ Ø®Ø²ÙØ© ÙÙÙÙ٠بتشغÙ٠اÙÙ Ø¹Ø§ÙØ¬ اÙÙ ÙØ§Ø³Ø¨.
ÙÙÙÙ ÙÙÙ
ا Ø¨Ø¹Ø¯Ø ÙØ¬Ø¨ Ø£Ù ÙØ¹Ø±Ù Ù٠جزء Ù
٠اÙÙÙØ¯ -ÙØ§ÙØ°Ù ÙØ±Ùد ÙØ§Ø¦Ù
Ø© Ø³ÙØ§Ù- Ø¹Ù ÙØ°Ø§ اÙÙØ§Ø¦Ù ÙØ£Ù ÙØ³ØªØ®Ø¯Ù
Ù
Ø³Ø§Ø¹Ø¯ØªÙ Ø¨Ø¯ÙØ§Ù Ù
Ù Ù
Ø¹Ø§ÙØ¬ ÙØ§Ø¦Ù
Ø© Ø§ÙØ³Ùا٠contextmenu.
اÙÙ ÙØ®Øµ
:ÙÙØ§Ù Ø§ÙØ¹Ø¯Ùد ٠٠إجراءات اÙÙ ØªØµÙØ Ø§ÙØ§ÙØªØ±Ø§Ø¶ÙØ©
mousedownâ ÙØ¨Ø¯Ø£ Ø§ÙØªØØ¯Ùد (ØØ±Ù اÙÙ Ø§ÙØ³ ÙÙØªØØ¯Ùد).clickعÙÙ<input type="checkbox">â ÙØ®ØªØ§Ø±/ÙØ²ÙÙ Ø§Ø®ØªÙØ§Ø±input.submitâ Ø§ÙÙÙØ± عÙÙ<input type="submit">أ٠ضغط Ù ÙØªØ§Ø Enter داخ٠ØÙ٠اÙÙÙ ÙØ°Ø¬ ÙØªØ³Ø¨Ø¨ ÙÙ ØØ¯ÙØ« ÙØ°Ø§ Ø§ÙØØ¯Ø« Ø ÙÙÙÙ٠اÙÙ ØªØµÙØ بإرسا٠اÙÙÙ ÙØ°Ø¬ بعدÙ.keydownâ ÙØ¯ ÙØ¤Ø¯Ù Ø§ÙØ¶ØºØ· عÙÙ Ù ÙØªØ§Ø Ø¥ÙÙ Ø¥Ø¶Ø§ÙØ© ØØ±Ù Ø¥ÙÙ ØÙ٠أ٠إجراءات أخرÙ.contextmenuâ ÙØØ¯Ø« Ø§ÙØØ¯Ø« Ø¹ÙØ¯ اÙÙÙØ± بزر اÙÙ Ø§ÙØ³ Ø§ÙØ£ÙÙ Ù Ø ÙØªÙ Ø«Ù Ø§ÙØ¥Ø¬Ø±Ø§Ø¡ ÙÙ Ø¥Ø¸ÙØ§Ø± ÙØ§Ø¦Ù Ø© Ø³ÙØ§Ù اÙÙ ØªØµÙØ.- â¦ÙÙÙØ§Ù Ø£ÙØ«Ø±â¦
ÙÙ ÙÙ Ù ÙØ¹ Ø¬Ù ÙØ¹ Ø§ÙØ¥Ø¬Ø±Ø§Ø¡Ø§Øª Ø§ÙØ§ÙØªØ±Ø§Ø¶ÙØ© إذا Ø£Ø±Ø¯ÙØ§ Ø§ÙØªØ¹Ø§Ù ٠٠ع Ø§ÙØØ¯Ø« ØØµØ±ÙÙØ§ Ø¨ÙØ§Ø³Ø·Ø©Ø§ÙØ¬Ø§ÙØ§ Ø§Ø³ÙØ±Ùبت.
ÙÙ
ÙØ¹ ØØ¯ÙØ« إجراء Ø§ÙØªØ±Ø§Ø¶Ù â Ø§Ø³ØªØ®Ø¯Ù
Ø¥Ù
ا event.preventDefault() Ø£Ù return false. Ø§ÙØ·Ø±ÙÙ Ø§ÙØ«Ø§ÙÙØ© عÙ
Ù ÙÙØ· Ù
ع اÙÙ
Ø¹Ø§ÙØ¬Ø§Øª اÙÙ
عÙÙØ© ب on<event>.
Ø®ÙØ§Ø± passive: true Ø§ÙØ®Ø§Øµ ب addEventListener ÙØ®Ø¨Ø± اÙÙ
ØªØµÙØ Ø£ÙÙ ÙÙ ÙØªÙ
Ù
ÙØ¹ Ø§ÙØ¥Ø¬Ø±Ø§Ø¡. ÙÙØ°Ø§ Ù
ÙÙØ¯ ÙØ¨Ø¹Ø¶ Ø§ÙØ£ØØ¯Ø§Ø« Ù٠اÙÙÙØ§ØªÙ اÙÙ
ØÙ
ÙÙØ©Ø Ù
ث٠touchstart Ù touchmoveØ ÙØ¥Ø®Ø¨Ø§Ø± اÙÙ
ØªØµÙØ بأÙÙ ÙØ¬Ø¨ Ø£ÙØ§ ÙÙØªØ¸Ø± ØØªÙ ØªÙØªÙ٠جÙ
ÙØ¹ اÙÙ
Ø¹Ø§ÙØ¬Ø§Øª ÙØ¨Ù Ø§ÙØªÙ
Ø±ÙØ± scrolling.
إذا تÙ
Ù
ÙØ¹ ÙØØ¯Ø« Ø§ÙØ§ÙØªØ±Ø§Ø¶ÙØ ÙØ¥Ù ÙÙÙ
Ø© event.defaultPrevented ØªØµØ¨Ø trueØ ÙØ¥Ùا ÙÙ٠تÙÙÙ false.
Ù
٠اÙÙØ§ØÙØ© اÙÙÙÙØ©Ø بÙ
ÙØ¹ Ø§ÙØ¥Ø¬Ø±Ø§Ø¦Ø§Øª Ø§ÙØ§ÙØªØ±Ø§Ø¶ÙØ© ÙØ¥Ø¶Ø§ÙØ© Ø§ÙØ¬Ø§Ùا Ø§Ø³ÙØ±Ùبت ÙØ³ØªØ·Ùع تعدÙ٠سÙÙÙ Ø£Ù Ø¹ÙØµØ±.Ù
Ø«ÙØ§ÙØ ÙÙ
ÙÙÙØ§ Ø£Ù ÙØ¬Ø¹Ù Ø§ÙØ±Ø§Ø¨Ø· <a> ÙØ¹Ù
Ù Ù
Ø«Ù Ø§ÙØ²Ø±Ø ÙÙØ¬Ø¹Ù Ø§ÙØ²Ø± <button> ÙØªØµØ±Ù Ù
Ø«Ù Ø§ÙØ±Ø§Ø¨Ø· (ÙØ¹Ùد ØªÙØ¬ÙÙÙØ§ Ø¥Ù٠عÙÙØ§Ù آخر Ø£Ù ÙØÙ Ø°ÙÙ).
ÙÙÙ ÙØ¬Ø¨ عÙÙÙØ§ عÙ
ÙÙ
ÙØ§ Ø§ÙØ§ØØªÙاظ باÙÙ
عÙÙ Ø§ÙØ¯ÙاÙÙ ÙØ¹Ùاصر HTML. عÙ٠سبÙ٠اÙÙ
Ø«Ø§Ù Ø ÙØ¬Ø¨ Ø£Ù ÙÙÙÙ
<a> Ø¨Ø§ÙØªÙÙÙ Ø ÙÙÙØ³ Ø§ÙØ²Ø±.
Ø¨Ø§ÙØ¥Ø¶Ø§ÙØ© Ø¥ÙÙ ÙÙ٠ذÙÙ â٠جرد Ø´ÙØ¡ Ø¬ÙØ¯â Ø ÙÙØ°Ø§ ÙØ¬Ø¹Ù HTML Ø§ÙØ®Ø§Øµ Ø¨Ù Ø£ÙØ¶Ù Ù Ù ØÙØ« Ø¥Ù ÙØ§ÙÙØ© اÙÙØµÙÙ.
ÙØ£Ùضا٠إذا Ø£Ø®Ø°ÙØ§ ÙÙ Ø§ÙØ§Ø¹ØªØ¨Ø§Ø± اÙÙ
Ø«Ø§Ù Ø§ÙØ®Ø§Øµ ب <a>Ø Ø¥Ø°Ø§Ù ÙØ±Ø¬Ù Ù
ÙØ§ØØ¸Ø©: أ٠اÙÙ
ØªØµÙØ ÙØ³Ù
Ø ÙÙØ§ Ø¨ÙØªØ Ù
Ø«Ù ÙØ°Ù Ø§ÙØ±Ùابط ÙÙ ÙÙØ§Ùذ أخر٠(ع٠طرÙ٠اÙÙÙØ± بزر اÙÙ
Ø§ÙØ³ Ø§ÙØ£ÙÙ
٠عÙÙÙØ§ ÙØºÙØ±ÙØ§ Ù
٠اÙÙØ³Ø§Ø¦Ù). ÙØ§ÙÙØ§Ø³ ااعتادت ذÙÙ ÙØªØØ¨ ÙØ°Ù Ø§ÙØ·Ø±ÙÙØ©. ÙÙÙ٠إذا جعÙÙØ§ Ø²Ø±ÙØ§ ÙØªØµØ±Ù ÙØ±Ø§Ø¨Ø· باستخداÙ
Ø§ÙØ¬Ø§Ùا Ø§Ø³ÙØ±Ùبت ÙØØªÙ Ø¨Ø¯Ø§ ÙÙØ£Ù٠رابط باستخداÙ
CSS Ø ÙÙ٠تعÙ
Ù Ù
ÙØ²Ø§Øª اÙÙ
ØªØµÙØ اÙÙ
ØØ¯Ø¯Ø© <a> Ù
٠أجÙÙ.
Ø§ÙØªØ¹ÙÙÙØ§Øª
<code>Ø ÙÙÙÙØ«Ùر Ù Ù Ø§ÙØ³Ø·Ùر استخدÙ<pre>Ø ÙÙØ£Ùثر Ù Ù 10 Ø³Ø·ÙØ± استخد٠(plnkr, JSBin, codepenâ¦)