Ø¨Ø³ÛØ§Ø±Û از رÙÛØ¯Ø§Ø¯Ùا Ø§ÙØ¯Ø§Ù ات Ø®ÙØ¯Ø¨ÙâØ®ÙØ¯Û از س٠ت Ù Ø±ÙØ±Ú¯Ø± را در Ù¾Û Ø¯Ø§Ø±ÙØ¯
Ø¨Ø±Ø§Û ÙÙ ÙÙÙ:
- ÛÚ© Ú©ÙÛÚ© بر رÙÛ ÙÛÙÚ© â Ø´Ù ا را ب٠آدرس Ù ÙØ±Ø¯Ùظر Ù ÛØ±Ø³Ø§Ùد
- ÛÚ© Ú©ÙÛÚ© رÙÛ Ø¯Ú©Ù Ù Ø§Ø±Ø³Ø§Ù ÙØ±Ù â ØªØ§ÛÛØ¯ Ù Ø§Ø±Ø³Ø§Ù ÙØ±Ù Ø¨Ù Ø³Ø±ÙØ± آغاز Ù ÛâØ´ÙØ¯.
- ÙØ´Ø±Ø¯Ù Ø¯Ú©Ù Ù Ù Ø§ÙØ³ بررÙÛ Ù ØªÙ Ù ØØ±Ú©Øª داد٠آ٠â ٠ت٠را Ø§ÙØªØ®Ø§Ø¨ Ù ÛâÚ©ÙØ¯
اگر Ø¨Ø®ÙØ§ÙÛÙ Ú©Ù ÛÚ© رÙÛØ¯Ø§Ø¯ را در Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت Ù Ø¯ÛØ±Ûت Ú©ÙÛ٠٠٠ک٠است ÙØ®ÙاÙÛ٠تا Ø§Ú©Ø´Ù Ù¾ÛØ´Ùرض Ù Ø±ÙØ±Ú¯Ø± Ø§ØªÙØ§Ù بÛÙØªØ¯ Ù Ø¨Ø®ÙØ§ÙÛÙ Ú©Ù Ø±ÙØªØ§Ø± Ù ØªÙØ§ÙØªÛ Ø¨Ù Ø¬Ø§Û Ø¢Ù Ø±Ø§ Ù¾ÛØ§Ø¯ÙâØ³Ø§Ø²Û Ú©ÙÛÙ .
جÙÙÚ¯ÛØ±Û از اکشÙâÙØ§Û Ù Ø±ÙØ±Ú¯Ø±
Ø¯Ù Ø±Ø§Ù Ø¨Ø±Ø§Û Ø§ÛÙÚ©Ù Ø¨Ù Ù Ø±ÙØ±Ú¯Ø± بگÙÛÛÙ ÙÙ ÛØ®ÙاÙÛ٠تا Ø±ÙØªØ§Ø± Ù¾ÛØ´Ùرض را Ø§ÙØ¬Ø§Ù Ø¯ÙØ¯ ÙØ¬Ùد دارد:
- را٠اصÙÛ Ø§Ø³ØªÙØ§Ø¯Ù از آبجکت
eventاست. Ù ØªØ¯Û Ø¨Ù ÙØ§Ù()event.preventDefaultÙØ¬Ùد دارد. - اگر ÙÙØ¯Ùر با Ø§Ø³ØªÙØ§Ø¯Ù از
<on<event٠شخص شد٠باشد (Ù٠باaddEventListener) Ø¢ÙÚ¯Ø§Ù Ø¨Ø§Ø²Ú¯Ø±Ø¯Ø§ÙØ¯Ù Ù ÙØ¯Ø§Ø±falseب٠ÙÙ ÛÙ ØµÙØ±Øª Ø¹Ù Ù Ø®ÙØ§Ùد کرد.
در اÛÙ ÙØ§ÛÙ HTML, Ú©ÙÛÚ© بر رÙÛ ÛÚ© ÙÛÙÚ© Ù ÙØ¬Ø± ب٠تغÛÛØ± آدرس ٠رÙگر ÙÙ ÛâØ´ÙØ¯; Ù Ø±ÙØ±Ú¯Ø± Ú©Ø§Ø±Û ÙÙ ÛâÚ©ÙØ¯:
<a href="/" onclick="return false">اÛÙØ¬Ø§ را Ú©ÙÛÚ© Ú©ÙÛØ¯</a>
ÛØ§
<a href="/" onclick="event.preventDefault()">اÛÙØ¬Ø§</a>
در Ù Ø«Ø§Ù Ø¨Ø¹Ø¯ÛØ ٠ا از اÛ٠تکÙÛÚ© Ø¨Ø±Ø§Û Ø§ÛØ¬Ø§Ø¯ ÛÚ© Ù Ù٠با Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت Ø§Ø³ØªÙØ§Ø¯Ù Ø®ÙØ§ÙÛ٠کرد.
false از ÛÚ© ÙÙØ¯Ùر ÛÚ© Ø§Ø³ØªØ«ÙØ§Ø³ØªÙ ÙØ¯Ø§Ø± Ø¨Ø§Ø²Ú¯Ø±Ø¯Ø§ÙØ¯Ù Ø´Ø¯Ù ØªÙØ³Ø· ÛÚ© ÙÙØ¯Ùر ٠ع٠ÙÙØ§ ÙØ§Ø¯ÛØ¯Ù Ú¯Ø±ÙØªÙ Ù ÛâØ´ÙØ¯.
تÙÙØ§ Ø§Ø³ØªØ«ÙØ§ Ø¨Ø±Ú¯Ø±Ø¯Ø§ÙØ¯Ù return false از ÛÚ© ÙÙØ¯Ùر اختصاص داد٠شد٠با Ø§Ø³ØªÙØ§Ø¯Ù از <on<event است.
در ÙÙ
ÙâÛ Ù
ÙØ§Ø±Ø¯ دÛگر Ù
ÙØ¯Ø§Ø± return ÙØ§Ø¯ÛØ¯Ù Ú¯Ø±ÙØªÙ Ù
ÛâØ´ÙØ¯. Ø¨Ù Ø·ÙØ± خاص Ø¨Ø§Ø²Ú¯Ø±Ø¯Ø§ÙØ¯Ù 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>. Ø¯ÙØ§ÛÙÛ Ù
ختÙÙÛ Ø¨Ø±Ø§Û Ø§ÙØ¬Ø§Ù
اÛÙکار ÙØ¬Ùد دارد. Ø¨Ø±Ø§Û Ù
ثاÙ:
- Ø¨Ø³ÛØ§Ø±Û از Ø§ÙØ±Ø§Ø¯ Ø¹ÙØ§ÙÙ Ø¯Ø§Ø±ÙØ¯ تا از "Ú©ÙÛÚ© راست " Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÙØ¯ ٠گزÛÙÙ â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 ); // Ù
ÛØªÙØ§ÙØ¯ ÙÙØ¯ از Ø³Ø±ÙØ± ÛØ§ ساخت UI Ù Ù
اÙÙØ¯ آ٠باشد...
return false; // از Ø±ÙØªØ§Ø± Ù¾ÛØ´Ùرض Ù
Ø±ÙØ±Ú¯Ø± جÙÙÚ¯ÛØ±Û Ù
ÛÚ©ÙØ¯ (ب٠آدرس ÙØ±Ù)
};
اگر return false را ØØ°Ù Ú©ÙÛÙ
Ø¢Ùگا٠پس از Ø§Ø¬Ø±Ø§Û Ú©Ø¯ Ù
ا Ù
Ø±ÙØ±Ú¯Ø± âØ±ÙØªØ§Ø± Ù¾ÛØ´ÙØ±Ø¶â Ø®Ùد را Ø§ÙØ¬Ø§Ù
Ø®ÙØ§Ùد داد â Ù
Ø±ÙØ±Ú¯Ø± Ø´Ù
ا را ب٠آدرس Ù
ÙØ¬Ùد در href ÙØ¯Ø§Ûت Ø®ÙØ§Ùد کرد. Ù Ù
ا ب٠آ٠اÛÙØ¬Ø§ ÙÛØ§Ø² ÙØ¯Ø§Ø±ÛÙ
ÚÙÙ Ù
ÛØ®ÙاÙÛÙ
Ú©Ù Ú©ÙÛÚ© ØªÙØ³Ø· Ø®ÙØ¯Ù
ا٠Ù
Ø¯ÛØ±Ûت Ø´ÙØ¯.
Ø¯Ø±Ø¶Ù Ù Ø§Ø³ØªÙØ§Ø¯Ù از event delegation در اÛÙØ¬Ø§ Ù ÙÙÛ Ù Ø§ را Ø¨Ø³ÛØ§Ø± Ø§ÙØ¹Ø·Ø§Ù Ù¾Ø°ÛØ± Ù ÛâÚ©ÙØ¯. ÚÙÙ Ù ÛâØªÙØ§ÙÛ٠از ÙÛØ³ØªâÙØ§Û ØªÙØ¯Ø±ØªÙ Ø§Ø³ØªÙØ§Ø¯Ù Ú©Ø±Ø¯Ù Ù Ø¢ÙØ±Ø§ با Ø§Ø³ØªÙØ§Ø¯Ù از CSS استاÛ٠دÙÛÙ . ٠ث٠استاÛÙ âslide downâ
رÙÛØ¯Ø§Ø¯ÙØ§Û Ù Ø´Ø®Øµ در ÛکدÛگر Ø¬Ø§Ø±Û Ù ÛØ´ÙÙØ¯. اگر از اÙÙÛ Ø¬ÙÙÚ¯ÛØ±Û Ú©ÙÛ٠رÙÛØ¯Ø§Ø¯ دÙÙ Û ÙØ¬Ùد ÙØ®ÙØ§ÙØ¯ داشت.
Ø¨Ø±Ø§Û Ù
ثا٠رÙÛØ¯Ø§Ø¯ mousedown بررÙÛ <input> Ù
ÙØ¬Ø± ب٠ÙÙÚ©ÙØ³ آ٠٠رÙÛØ¯Ø§Ø¯ ÙÙÚ©ÙØ³ Ù
ÛâØ´ÙØ¯. اگر از رÙÛØ¯Ø§Ø¯ mousedown جÙÙÚ¯ÛØ±Û Ú©ÙÛÙ
Ø¢Ùگا٠ÙÙÚ©ÙØ³Û ÙØ®ÙاÙÛÙ
داشت.
ØªÙØ§Ø´ Ú©ÙÛØ¯ تا بررÙÛ Ø§ÙÙÛÙ <input> Ú©ÙÛÚ© Ú©ÙÛØ¯ â Ø±ÙÛØ¯Ø§Ø¯ focus رخ Ø®ÙØ§Ùد داد. اÙ
ا اگر بررÙÛ Ø¯ÙÙ
Û Ú©ÙÛÚ© Ú©ÙÛØ¯ ÙÙÚ©ÙØ³Û ÙØ¬Ùد ÙØ®ÙØ§ÙØ¯ داشت.
<input value="Focus works" onfocus="this.value=''">
<input onmousedown="return false" onfocus="this.value=''" value="Click me">
اÛ٠بخاطر آ٠است ک٠اکش٠Ù
Ø±ÙØ±Ú¯Ø± بررÙÛ mousedown ÙØºÙ شد٠است. ÙÙÚ©ÙØ³ کرد٠ÙÙ
ÚÙØ§Ù اÙ
کاÙâÙ¾Ø°ÛØ± است اگر Ù
ا را٠دÛÚ¯Ø±Û Ø¨Ø±Ø§Û ÙØ§Ø±Ø¯ کرد٠اÛÙÙ¾ÙØª Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
. Ø¨Ø±Ø§Û Ù
ثا٠کÙÛØ¯ Tab Ø¨Ø±Ø§Û Ø§ÙØªÙا٠از اÛÙÙ¾ÙØª اÙ٠ب٠دÙÙ
اÙ
ا بدÙÙ Ø§Ø³ØªÙØ§Ø¯Ù از Ú©ÙÛÚ© Ù
Ø§ÙØ³.
<<<<<<< HEAD
ا٠کا٠ÙÙØ¯Ùر âpassiveâ
Ø¢Ù¾Ø´Ù Ø§Ø®ØªÛØ§Ø±Û passive: true از addEventListener اÛ٠سÛÚ¯ÙØ§Ù را ب٠Ù
Ø±ÙØ±Ú¯Ø± Ù
ÛØ¯Ùد Ú©Ù Ù
Ø±ÙØ±Ú¯Ø± ÙÙØ¯Ùر ()preventDefault را صدا ÙØ®ÙØ§ÙØ¯ کرد.
ÚØ±Ø§ ٠٠ک٠است ک٠ب٠اÛ٠آپش٠ÙÛØ§Ø² Ù¾ÛØ¯Ø§ Ú©ÙÛÙ Ø
اÛÙÙØª ÙØ§ÛÛ ÙÙ
ÚÙÙ touchmove در دÛÙØ§ÛسâÙØ§Û Ù
ÙØ¨Ø§ÛÙÛ ÙØ¬Ùد Ø¯Ø§Ø±ÙØ¯ (زÙ
اÙÛ Ú©Ù ÛÙØ²Ø± اÙگشت Ø®ÙØ¯ را بررÙÛ ØµÙØÙâÙÙ
Ø§ÛØ´ ØØ±Ú©Øª Ù
ÛâØ¯ÙØ¯) Ú©Ù Ø¨Ù ØµÙØ±Øª Ù¾ÛØ´Ùرض باعث اسکرÙÙ Ù
ÛâØ´ÙÙØ¯ اÙ
ا اÛ٠اسکرÙÙ Ø®ÙØ±Ø¯Ù Ù
ÛØªÙØ§ÙØ¯ با ÙØ¬Ùد ()preventDefault در ÙÙØ¯Ùر جÙÙÚ¯ÛØ±Û Ø´ÙØ¯.
Ø¨ÙØ§Ø¨Ø±Ø§Û٠زÙ
اÙÛ Ú©Ù Ù
Ø±ÙØ±Ú¯Ø± ÚÙÛ٠اÛÙÙØªÛ را Ø´ÙØ§Ø³Ø§ÛÛ Ù
ÛÚ©ÙØ¯ اÙ٠از ÙÙ
Ù Ø¨Ø§ÛØ¯ ÙÙ
ÙâÛ ÙÙØ¯ÙØ±ÙØ§Ø±Ø§ Ø¨Ø±Ø±Ø³Û Ú©Ø±Ø¯Ù Ù Ø§Ú¯Ø± preventDefault جاÛÛ ØµØ¯Ø§ Ø²Ø¯Ù ÙØ´Ø¯Ù باشد Ù
ÛØªÙØ§ÙØ¯ با اسکرÙÙ Ø®ÙØ±Ø¯Ù اداÙ
Ù ÛØ§Ø¨Ø¯ ک٠اÛÙ Ù
ÛØªÙØ§ÙØ¯ سبب ØªØ§Ø®ÛØ±Ùا Ù ÙØ±Ø²Ø´âÙØ§Û ØºÛØ±Ø¶Ø±ÙØ±Û Ø´ÙØ¯.
گزÛÙÙ passive: true ب٠Ù
Ø±ÙØ±Ú¯Ø± Ù
ÛÚ¯ÙÛØ¯ Ú©Ù ÙÙØ¯Ùر ÙØµØ¯ ÙØºÙ اسکرÙ٠را ÙØ¯Ø§Ø±Ø¯ Ø¢Ùگا٠Ù
Ø±ÙØ±Ú¯Ø± Ø¨ÙØ§ÙاصÙ٠عÙ
٠اسکرÙ٠را Ø§ÙØ¬Ø§Ù
Ù
ÛâØ¯ÙØ¯ Ù ØªØ¬Ø±Ø¨Ù Ø®ÙØ¨ Ù Ø±ÙØ§ÙÛ Ø±Ø§ Ø¨Ø±Ø§Û Ú©Ø§Ø±Ø¨Ø± Ø¨Ù ÙØ¬Ùد Ù
ÛâØ¢ÙØ±Ø¯ ٠درضÙ
٠رÙÛØ¯Ø§Ø¯ ÙÙ
ÙÙØ¯Ù Ù
ÛâØ´ÙØ¯.
در Ø¨Ø¹Ø¶Û Ø§Ø² Ù
Ø±ÙØ±Ú¯Ø±Ùا (ÙØ§ÛØ±ÙØ§Ú©Ø³ ٠کرÙÙ
) Ù
ÙØ¯Ø§Ø± passive Ø¨Ù ØµÙØ±Øª Ù¾ÛØ´Ùرض Ø¨Ø±Ø§Û Ø±ÙÛØ¯Ø§Ø¯ÙØ§Û touchstart Ù touchmove Ù
ÙØ¯Ø§Ø± true دارد.
bae0ef44d0208506f6e9b7f3421ee640ab41af2b
event.defaultPrevented
ÙÛÚÚ¯Û event.defaultPrevented اگر از Ø§Ú©Ø´Ù Ù¾ÛØ´Ùرض جÙÙÚ¯ÛØ±Û شد٠باشد true Ø¨ÙØ¯Ù Ù Ø¯Ø±ØºÛØ±Ø§ÛÙØµÙرت false Ø®ÙØ§Ùد Ø¨ÙØ¯.
ÛÚ© Ù ÙØ±Ø¯ Ø§Ø³ØªÙØ§Ø¯Ù Ø¬Ø§ÙØ¨ Ø¨Ø±Ø§Û Ø§ÛÙ ÙØ¬Ùد دارد.
Ø¨Ù ÛØ§Ø¯ Ø¯Ø§Ø±ÛØ¯ ک٠در ÙØµÙ Ø¨Ø§ÙØ§Ø±ÙØªÙ Ù Ú¯Ø±ÙØªÙ راجع ب٠()event.propagation ٠اÛÙÚ©Ù ÚØ±Ø§ bubbling Ø®ÙØ¨ ÙÛØ³Øª ØµØØ¨Øª کردÛÙ
Ø
گاÙÛ Ø§ÙÙØ§Øª Ø¨Ø±Ø§Û Ø§ÛÙک٠ب٠باÙÛ Ø§ÛÙÙØª ÙÙØ¯ÙØ±ÙØ§ خبر بدÙÛÙ
ک٠اÛÙÙØª ÙÙØ¯Ù شد٠Ù
ÛØªÙاÙÛÙ
از event.defaultPrevented Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
.
Ø¨ÛØ§Ûد تا با ÙÙ ÛÚ© ٠ثا٠ع٠ÙÛ Ø±Ø§ ببÛÙÛÙ .
Ø¨Ù ØµÙØ±Øª Ù¾ÛØ´Ùرض Ù
رÙگر در پاسخ ب٠اÛÙÙØª contextmenu (Ú©ÙÛÚ© راست Ù
Ø§ÙØ³) ÛÚ© Ù
Ù٠با آپشÙâÙØ§Û Ø§Ø³ØªØ§ÙØ¯Ø§Ø±Ø¯ را ÙÙ
Ø§ÛØ´ Ù
ÛâØ¯ÙØ¯. Ù
ا Ù
ÛâØªÙØ§ÙÛÙ
از اÛÙ Ù
ÙØ¶Ùع جÙÙÚ¯ÛØ±Û کرد٠٠Ù
ÙÙÛ Ø®ÙØ¯Ù
ا٠را ÙÙ
Ø§ÛØ´ دÙÛÙ
. ب٠اÛÙØµÙرت:
<button>Ú©ÙÛÚ© راست context menu Ù
Ø±ÙØ±Ú¯Ø± را ÙÙ
Ø§ÛØ´ Ù
ÛâØ¯ÙØ¯</button>
<button oncontextmenu="alert('Draw our menu'); return false">
Ú©ÙÛÚ© راست context menu Ù
ا را ÙÙ
Ø§ÛØ´ Ù
ÛâØ¯ÙØ¯
</button>
ØØ§Ùا Ø¹ÙØ§Ù٠بر context menu Ù ÛØ®ÙاÙÛ٠تا ÛÚ© Ù Ù٠تعرÛ٠شد٠در داکÛÙÙ ÙØª Ù¾ÛØ§Ø¯ÙâØ³Ø§Ø²Û Ú©ÙÛÙ .
با Ú©ÙÛÚ©âØ±Ø§Ø³Øª ÙØ²Ø¯ÛÚ©âØªØ±ÛÙ context menu Ø¸Ø§ÙØ± Ø®ÙØ§Ùد شد.
<p>Ø¨Ø±Ø§Û context menu داکÛÙÙ
ÙØª اÛÙØ¬Ø§ Ú©ÙÛÚ© راست Ú©ÙÛØ¯</p>
<button id="elem">Ø¨Ø±Ø§Û 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 Ú©ÙÛÚ© Ú©ÙÛÙ
د٠Ù
ÙÙ Ø®ÙØ§ÙÛÙ
داشت: Ù
ÙÙÛ ØªØ¹Ø±Û٠شد٠بررÙÛ Ø¯Ú©Ù
Ù Ù (زÙ
اÙÛ Ú©Ù Ø±ÙÛØ¯Ø§Ø¯ bubble up Ù
ÛâÚ©ÙØ¯) Ù
ÙÙÛ ØªØ¹Ø±Û٠شد٠در داکÛÙÙ
ÙØª.
ÚØ·Ùر اÛÙ Ù
سئÙ٠را ÙÛکس Ú©ÙÛÙ
Ø ÛÚ©Û Ø§Ø² راÙâØÙ ÙØ§ اÛ٠است: âØ²Ù
اÙÛ Ú©Ù Ú©Ù Ù
ÛØ®ÙاÙÛÙ
Ú©ÙÛÚ©âØ±Ø§Ø³Øª را در ÙÙØ¯Ùر دکÙ
Ù ÙÙØ¯Ù Ú©ÙÛÙ
Ø¨ÛØ§Ûد تا bubbling آ٠را Ù
تÙÙ٠کردÙâ ٠از ()event.stopPropagation Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
.
<p>Ø¨Ø±Ø§Û Ù
ÙÙÛ Ø¯Ø§Ú©ÛÙÙ
ÙØª اÛÙØ¬Ø§ Ú©ÙÛÚ© راست Ú©ÙÛØ¯</p>
<button id="elem">Ø¨Ø±Ø§Û Ù
ÙÙÛ Ø¯Ú©Ù
Ù (با 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>
ØØ§Ùا Ù ÙÙÛ ØªØ¹Ø±Û٠شد٠بررÙÛ Ø¯Ú©Ù Ù ÙÙ Ø§ÙØ·Ùر Ú©Ù Ù ÛØ®ÙاستÛ٠کار Ù ÛâÚ©ÙØ¯. ا٠ا ÙØ²ÛÙ٠اÛÙکار Ø¨Ø§ÙØ§Ø³Øª. ٠ا Ø¨Ø±Ø§Û ÙÙ ÛØ´Ù Ø¯Ø³ØªØ±Ø³Û Ø¨Ù Ø§Ø·ÙØ§Ø¹Ø§Øª راجع ب٠کÙÛÚ© راست را Ø¨Ø±Ø§Û Ú©Ø¯ÙØ§Û Ø¨ÛØ±ÙÙÛ ÙØ·Ø¹ Ù ÛÚ©ÙÛÙ Ú©Ù Ø´Ø§Ù Ù Ø´Ù Ø§Ø±ÙØ¯ÙâÙØ§ÛÛ Ú©Ù Ø¢Ù Ø§Ø± ٠ا٠ثاÙÙ٠را ج٠ع Ù ÛÚ©ÙÙØ¯ Ù ÛØ´Ùد. ک٠اÛÙکار ÙÙØ´Ù ÙØ¯Ø§ÙÙ ÙÛØ³Øª.
ÛÚ© راÙâØÙ جاÛگزÛÙ Ø¨Ø±Ø±Ø³Û ÙÙØ¯Ùر document ٠اÛÙÚ©Ù Ø¢ÛØ§ اکش٠جÙÙÚ¯ÛØ±Û Ø´Ø¯Ù ÛØ§ ÙÙ Ù
ÛâØ¨Ø§Ø´Ø¯. اگر اÛÙÚ¯ÙÙ٠است Ø¢Ùگا٠رÙÛØ¯Ø§Ø¯ ÙÙØ¯Ù شد٠٠ÙÛØ§Ø²Û Ø¨Ù ÙØ§Ú©ÙØ´ ب٠آ٠ÙÛØ³Øª.
<p>Ú©ÙÛÚ© راست Ø¨Ø±Ø§Û Ù
ÙÙÛ Ø¯Ø§Ú©ÛÙÙ
ÙØª (ØØ§ÙØªÛ Ú©Ù Ø¨Ø±Ø±Ø³Û event.defaultPrevented اضاÙ٠شد٠است)</p>
<button id="elem">Ø¨Ø±Ø§Û Ù
ÙÙÛ Ø¯Ú©Ù
Ù Ú©ÙÛÚ© راست Ú©ÙÛØ¯</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>
ØØ§Ùا ÙÙ
Ù ÚÛØ² Ø¨Ù Ø¯Ø±Ø³ØªÛ Ú©Ø§Ø± Ù
ÛÚ©ÙØ¯. اÛ٠را٠ØÙ ØØªÛ اگر اÙÙ
ÙØªâÙØ§Û ØªÙØ¯Ø±ØªÙÛÛ Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´ÛÙ
Ú©Ù ÙØ±Ú©Ø¯Ø§Ù
Ù
ÙÙÛ Ø®ÙØ¯Ø´Ø§Ù را Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´ÙØ¯ ÙÙ
کار Ù
ÛâÚ©ÙØ¯. ÙÙØ· اطÙ
ÛÙØ§Ù ØØ§ØµÙ Ú©ÙÛØ¯ Ú©Ù event.defaultPrevented در ÙØ± ÛÚ© از ÙÙØ¯ÙØ±ÙØ§Û contextmenu ÚÚ© Ù
ÛâØ´ÙØ¯.
ÙØ§Ø¶Ø است Ú©Ù ()event.stopPropagation Ù ()event.preventDefault (Ú©Ù ÙÙ
ÚÙÛ٠ب٠عÙÙØ§Ù return false Ø´ÙØ§Ø®ØªÙ Ù
ÛâØ´ÙØ¯) د٠ÚÛØ² Ù
ØªÙØ§Ùت از ÙÙ
ÙØ³ØªÙد ک٠ب٠ÛکدÛگر Ø±Ø¨Ø·Û ÙØ¯Ø§Ø±Ùد.
ÙÙ
ÚÙÛ٠راÙâÙØ§Û جاÛگزÛÙÛ Ø¨Ø±Ø§Û Ù¾ÛØ§Ø¯ÙââØ³Ø§Ø²Û Ù
ÙÙÙØ§Û ØªÙØ¯Ø±ØªÙ ÙØ¬Ùد دارد. ÛÚ©Û Ø§Ø² Ø¢ÙÙØ§ اÛ٠است Ú©Ù ÛÚ© آبجکت Ú¯ÙÙØ¨Ø§Ù با ÛÚ© ÙÙØ¯Ùر Ø¨Ø±Ø§Û document.oncontextmenu داشت٠باشÛÙ
Ù ÙÙ
ÚÙÛÙ Ù
ØªØ¯ÙØ§ÛÛ Ú©Ù Ø¨Ù Ù
ا اجاز٠Ù
ÛâØ¯ÙÙØ¯ تا دÛگر ÙÙØ¯ÙØ±ÙØ§ÛÛ Ø±Ø§ در Ø¢Ù Ø°Ø®ÛØ±Ù Ú©ÙÛÙ
.
آبجت ÙØ±Ú¯ÙÙÙ Ú©ÙÛÚ© Ø±Ø§Ø³ØªÛ Ø±Ø§ Ú¯Ø±ÙØªÙØ ÙگاÙÛ Ø¨Ù ÙÙØ¯ÙØ±ÙØ§Û Ø¢Ù Ù ÛâØ§ÙØ¯Ø§Ø²Ø¯ Ù ÙÙØ¯Ùر Ù ÙØ§Ø³Ø¨ را اجرا Ù ÛÚ©ÙØ¯.
اÙ
ا در اÛÙØµÙرت ÙØ± ØªÚ©Ù Ú©Ø¯Û Ú©Ù Ø¨Ø®ÙØ§Ùد context menu داشت٠باشد Ø¨Ø§ÛØ¯ راجع ب٠آ٠آبجکت Ø¨Ø¯Ø§ÙØ¯ Ù Ø¨Ù Ø¬Ø§Û ÙÙØ¯Ùر contextmenu Ø®ÙØ¯Ø´ از Ú©Ù
Ú© آ٠آبجکت Ú¯ÙÙØ¨Ø§Ù Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙØ¯.
Ø®ÙØ§ØµÙ
Ø§Ú©Ø´Ù ÙØ§Û Ù¾ÛØ´Ùرض ٠ختÙÙÛ ÙØ¬Ùد Ø¯Ø§Ø±ÙØ¯:
mousedownâ Ø§Ùتخاب ٠ت٠را آغاز Ù ÛâÚ©ÙØ¯ (Ø¨Ø±Ø§Û Ø§ÙØªØ®Ø§Ø¨ Ù Ø§ÙØ³ را ØØ±Ú©Øª دÙÛØ¯)clickبر رÙÛ<input type="checkbox">âinputرا check/uncheck Ù ÛâÚ©ÙØ¯.submitâ Ú©ÙÛÚ© بر رÙÛ<input type="submit">ÛØ§ ÙØ´Ø±Ø¯Ù Enter درÙÙ ÛÚ© ÙÛÙØ¯ ÙØ±Ù باعث رخ داد٠اÛ٠رÙÛØ¯Ø§Ø¯ Ù ÛâØ´ÙØ¯ Ù Ù Ø±ÙØ±Ú¯Ø± پس از Ø¢Ù ÙØ±Ù را Ø³Ø§Ø¨Ù ÛØª Ù ÛâÚ©ÙØ¯.keydownâ ÙØ´Ø±Ø¯Ù ÛÚ© Ú©ÙÛØ¯ ٠٠ک٠است باعث Ø§ÙØ²Ùد٠ÛÚ© کاراکتر ب٠ÙÛÙØ¯ ÛØ§ اکشÙâÙØ§Û دÛگر Ø´ÙØ¯.contextmenuâ Ø±ÙÛØ¯Ø§Ø¯Û ک٠با Ú©ÙÛÚ© راست رخ Ù ÛâØ¯ÙØ¯ ٠اکش٠٠رتبط با Ø¢Ù ÙÙ Ø§ÛØ´ context menu Ù Ø±ÙØ±Ú¯Ø± است.- âÙ ÙØ§Ø±Ø¯ Ø¨ÛØ´ØªØ±Û ÙÙ ÙØ¬Ùد Ø¯Ø§Ø±ÙØ¯â
اگر Ø¨Ø®ÙØ§ÙÛ٠تا اÛÙÙØª را Ø¨Ù Ø·ÙØ± خاص با Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت ÙÙØ¯Ù Ú©ÙÛÙ Ù ÛâØªÙØ§ÙÛ٠از ÙÙ ÙâÛ Ø§Ú©Ø´ÙâÙØ§Û Ù¾ÛØ´Ùرض جÙÙÚ¯ÛØ±Û Ú©ÙÛÙ .
Ø¨Ø±Ø§Û Ø¬ÙÙÚ¯ÛØ±Û از ÛÚ© Ø§Ú©Ø´Ù Ù¾ÛØ´Ùرض Ù
ÛØªÙاÙÛÙ
از ()event.preventDefault ÛØ§ return false Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
. دÙÙ
ÛÙ Ù
تد تÙÙØ§ Ø¨Ø±Ø§Û ÙÙØ¯ÙØ±ÙØ§Û اختصاص ÛØ§Ùت٠با <on<event کار Ù
ÛâÚ©ÙØ¯.
اگر از Ø§Ú©Ø´Ù Ù¾ÛØ´Ùرض جÙÙÚ¯ÛØ±Û شد٠باشد Ù
ÙØ¯Ø§Ø± event.defaultPrevented ب٠true تغÛÛØ± Ù
ÛâÚ©ÙØ¯ در ØºÛØ±Ø§ÛÙØµÙرت false Ù
ÛâØ´ÙØ¯.
ب٠شک٠تکÙÛکا٠با جÙÙÚ¯ÛØ±Û از اکشÙâÙØ§Û Ù¾ÛØ´Ùرض Ù
Ø±ÙØ±Ú¯Ø± Ù Ø§ÙØ²ÙØ¯Ù Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت Ù
ÛØªÙاÙÛÙ
Ø±ÙØªØ§Ø± اÙÙ
ÙØªâÙØ§ را شخصÛâØ³Ø§Ø²Û Ú©ÙÛÙ
. Ø¨Ø±Ø§Û Ù
ثا٠Ù
ÛØªÙاÙÛÙ
Ú©Ø§Ø±Û Ú©ÙÛÙ
تا تگ <a> Ù
اÙÙØ¯ ÛÚ© دکÙ
٠کار Ú©ÙØ¯ Ù ÛÚ© دکÙ
Ù <button> Ù
اÙÙØ¯ ÛÚ© ÙÛÙÚ© Ø±ÙØªØ§Ø± Ú©ÙØ¯ (ÛÙ ÛÚ© آدرس دÛگر Ø±ÛØ¯Ø§Ûرکت Ú©ÙØ¯ ٠اÙ
ثاÙÙÙ
).
اÙ
ا Ù
ا Ø¨Ø§ÛØ¯ Ø¨Ù Ø·ÙØ± Ú©ÙÛ Ù
Ø¹ÙØ§Û سÙ
ÙØªÛÚ© اÙÙ
ÙØªâÙØ§ را ØÙظ Ú©ÙÛÙ
. Ø¨Ø±Ø§Û Ù
ثا٠<a> Ø¨Ø§ÛØ¯ ÙØ¯Ø§Ûت Ù
Ø±ÙØ±Ú¯Ø± ب٠آدرسâÙØ§ را Ø§ÙØ¬Ø§Ù
Ø¯ÙØ¯ ÙÙ ÛÚ© دکÙ
Ù.
اÛÙ Ù ÙØ¶Ùع Ø¹ÙØ§Ù٠بر اÛÙÚ©Ù âÚÛØ² Ø®ÙØ¨Û استâ کد HTML ش٠ا را از ÙØ¸Ø± دسترسÛâÙ¾Ø°ÛØ±Û Ø¨ÙØªØ± Ù ÛÚ©ÙØ¯.
Ø¹ÙØ§Ù٠بر اÛ٠اگر Ù
ثا٠<a> را Ø¯Ø±ÙØ¸Ø± Ø¨Ú¯ÛØ±ÛÙ
Ø¨Ø§ÛØ¯ ب٠اÛÙ ÙÚ©ØªÙ ØªÙØ¬Ù Ú©ÙÛØ¯ Ú©Ù: ÛÚ© Ù
Ø±ÙØ±Ú¯Ø± ب٠Ù
ا اÛ٠اجاز٠را Ù
ÛâØ¯ÙØ¯ تا اÛÙ ÙÛÙÚ©âÙØ§ را در ÛÚ© Ù¾ÙØ¬Ø±Ù Ø¬Ø¯ÛØ¯ باز Ú©ÙÛÙ
(با Ú©ÙÛÚ© راست بررÙÛ Ù
ÙÙÙØ§) ٠کاربرا٠اÛÙ Ø±ÙØªØ§Ø± را Ø¯ÙØ³Øª Ø¯Ø§Ø±ÙØ¯. اÙ
ا اگر Ú©Ø§Ø±Û Ú©ÙÛÙ
Ú©Ù ÛÚ© دکÙ
Ù Ù
اÙÙØ¯ ÙÛÙÚ© Ø±ÙØªØ§Ø± Ú©ÙØ¯ Ù ØØªÛ با Ø§Ø³ØªÙØ§Ø¯Ù از css Ø¸Ø§ÙØ±Ø´ را Ù
اÙÙØ¯ ÛÚ© ÙÛÙÚ© Ú©ÙÛÙ
Ø¢Ùگا٠ÙÛÚÚ¯ÛâÙØ§Û Ù
ÙØØµØ± Ø¨Ù ÙØ±Ø¯ تگ <a> Ø¨Ø±Ø§Û Ø¢Ù Ø¹Ù
Ù ÙØ®ÙØ§ÙØ¯ کرد.
ÙØ¸Ø±Ø§Øª
<code>Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯Ø Ø¨Ø±Ø§Û ÚÙØ¯Û٠خط â کد را درÙ٠تگ<pre>ÙØ±Ø§Ø± دÙÛØ¯Ø Ø¨Ø±Ø§Û Ø¨ÛØ´ از د٠خط کد â Ø§Ø² ÛÚ© جعبÙÙ Ø´ÙÛ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯. (plnkrØ jsbinØ codepenâ¦)