“Javascript: void (0)” යන්නෙන් අදහස් කරන්නේ කුමක්ද?


1398
<a href="javascript:void(0)" id="loginlink">login</a>

මම එවැනි hrefඅවස්ථා බොහෝ වාරයක් දැක ඇත්තෙමි , නමුත් එහි තේරුම කුමක්දැයි මම නොදනිමි.


13
javascript:බොහෝ URI යෝජනා ක්‍රම වලින් එකකි: en.wikipedia.org/wiki/URI_scheme , වැනි data:.
සිරෝ සැන්ටිලි 郝海东 冠状 病 六四 事件 法轮功

4
ඔබට href="javascript:"එකම අරමුණක් සඳහා භාවිතා කළ හැකිය . මෙම ප්‍රශ්නයට පිළිතුරෙහි සඳහන් කර ඇති පරිදි , මෙම void(0)කොටස මුලින් අදහස් කළේ javascript:යූආර්අයි හැසිරවීම වෙනස් වූ බ්‍රව්සර්වල මුල් සංස්කරණ සඳහා ය . නමුත් දැන් මට කෙටියෙන් ක්‍රියා නොකරන අනුවාදයක් සොයා ගැනීමට නොහැකි විය, අවම වශයෙන් IE7 මෙය නිවැරදිව හසුරුවයි.
පරිශීලක

1
Href = "javascript: //" ද මම දැක ඇත්තෙමි, මෙය වඩා හොඳද?
ලයිට්සෙබර්

href = "javascript: //" මා වෙනුවෙන් වැඩ නොකරයි අවලංගුයි (0) පරිපූර්ණව ක්‍රියා කරයි.
සඳිප්

Answers:


1056

මෙම voidක්රියාකරු ලබා දී ප්රකාශනය හා පසුව ප්රතිලාභ ඇගයීමට ලක් undefined.

මෙම voidක්රියාකරු බොහෝ විට හුදෙක් ලබා ගැනීම සඳහා භාවිතා කරයි undefinedප්රාථමික අගය, සාමාන්යයෙන් භාවිතා වන " void(0)" (සමාන වන, " void 0"). මෙම අවස්ථා වලදී, ගෝලීය විචල්‍යය undefined ඒ වෙනුවට භාවිතා කළ හැකිය (එය පෙරනිමි නොවන අගයකට පවරා නොමැති බව උපකල්පනය කරන්න).

පැහැදිලි කිරීමක් මෙහි දක්වා ඇත: voidක්‍රියාකරු .

ඔබට hrefසබැඳියක් සමඟ මෙය කිරීමට අවශ්‍ය හේතුව සාමාන්‍යයෙන්, javascript:URL යක් බ්‍රව්සරය එම ජාවාස්ක්‍රිප්ට් ඇගයීමේ ප්‍රති result ලයේ සරල පෙළ අනුවාදයකට හරවා යැවීමයි. නමුත් ප්‍රති result ලය නම් undefined, බ්‍රව්සරය එකම පිටුවක රැඳේ. void(0)යනු තක්සේරු කරන කෙටි හා සරල පිටපතකි undefined.


11
H href ට “නිර්වචනය නොකළ ප්‍රාථමික අගයක්” ලබා දුන් විට එයින් අදහස් කරන්නේ කුමක්ද?
omg

9
"සාමාන්‍යයෙන් ජාවාස්ක්‍රිප්ට්: යූආර්එල් විසින් එම ජාවාස්ක්‍රිප්ට් ඇගයීමේ ප්‍රති result ලයේ සරල පෙළ අනුවාදයකට බ්‍රව්සරය හරවා යවනු ඇත." ඔබට මෙහි උදාහරණයක් කළ හැකිද? මම එවැනි භාවිතයක් දැක නැත.
omg

91
ෆීනික්ස් කතා කරන දෙයට උදාහරණයක් වන්නේ <a href="javascript: dosomething() ;"> දැන් එය කරන්න! </a>. මාත්‍රාව වැරදියි නම්, සබැඳිය ක්ලික් කිරීමෙන් බ්‍රව්සරය පිටුවෙන් පිටවී “අසත්‍යය” පෙන්වනු ඇත. කෙසේ වෙතත් ... <a href="javascript: dosomething(); void(0)"> දැන් එය කරන්න! </a> ගැටළුව මඟහරවා ගනී. ඉදිරියට ගොස් javascript අලවන්න: 1 + 1; ඔබගේ බ්‍රව්සර් ලිපින තීරුවට. බ්‍රව්සරය "2" පෙන්විය යුතුය
බ්‍රෙටන්

9
අවලංගු කිරීම යනු ඒකීය ක්‍රියාකරුවෙකි. අවලංගු කිරීම වටිනාකමක් නොවේ, එය ශ්‍රිතයක් ද නොවේ. එහි දකුණට ක්‍රියාත්මක වීමට එයට වටිනාකමක් අවශ්‍ය වේ, නැතහොත් එය දෝෂයක් ඇති කරයි.
බ්‍රෙටන්

14
දෝෂ කොන්සෝලය දෙස බැලීමට උත්සාහ කරන්න? එය නිශ්චිතවම සින්ටැක්ස් දෝෂයක් විසි කරයි. එය අවලංගු ජාවාස්ක්‍රිප්ට් ය. ඒකීය ක්‍රියාකරු / ක්‍රියාකාරිත්වය / වටිනාකම් ව්‍යාකූලත්වය සමඟ කටයුතු කිරීමට නොහැකි වීම නිසා ඩග්ලස් ක්‍රොක්ෆර්ඩ් අවලංගු වීමෙන් away ත්ව සිටී.
බ්‍රෙටන්

440

තාක්ෂණික පිළිතුරට අමතරව, javascript:voidකතුවරයා කරන්නේ එය වැරදියි යන්නයි.

javascript:ව්‍යාජ URL (*) භාවිතා කිරීමට හොඳ හේතුවක් නොමැත . 'පොත් සලකුණු සබැඳිය', 'නව පටිත්තක විවෘත සබැඳිය' වැනි දේ යමෙකු උත්සාහ කළහොත් එය ප්‍රායෝගිකව ව්‍යාකූලත්වයට හෝ දෝෂයකට හේතු වේ. මෙය දැන් බොහෝ දේ සිදුවී ඇත, මිනිසුන් නව-ටැබ් සඳහා මැද-ක්ලික් කිරීමට පුරුදු වී ඇත: එය සබැඳියක් සේ පෙනේ, ඔබට එය නව පටිත්තකින් කියවීමට අවශ්‍යය, නමුත් එය කිසිසේත්ම සැබෑ සබැඳියක් නොවන බව පෙනේ, මැද ක්ලික් කළ විට හිස් පිටුවක් හෝ JS දෝෂයක් වැනි අනවශ්‍ය ප්‍රති results ල ලබා දෙයි.

<a href="#">අඩු විකල්පයක් විය හැකි පොදු විකල්පයකි. කෙසේ වෙතත් , සබැඳිය අනුගමනය කිරීම වැළැක්වීමට සහ පිටුවේ ඉහළට අනුචලනය කිරීමට return falseඔබේ onclickසිදුවීම් හසුරුවන්නාගෙන් ඔබ මතක තබා ගත යුතුය .

සමහර අවස්ථාවල සබැඳිය යොමු කිරීමට සත්‍ය ප්‍රයෝජනවත් ස්ථානයක් තිබිය හැකිය. උදාහරණයක් ලෙස ඔබට පාලනයක් තිබේ නම් එය මත ක්ලික් කළ හැකි අතර එය කලින් සැඟවුණු එකක් විවෘත කරයි <div id="foo">, එයට <a href="#foo">සම්බන්ධ වීමට භාවිතා කිරීම යම් තේරුමක් ඇත . හෝ එකම දේ කිරීමට ජාවාස්ක්‍රිප්ට් නොවන ක්‍රමයක් තිබේ නම් (නිදසුනක් ලෙස, ආරම්භ කිරීමට foo දෘශ්‍යමාන වන 'thispage.php? Show = foo'), ඔබට එයට සම්බන්ධ විය හැකිය.

එසේ නොමැතිනම්, සබැඳියක් යම් ස්ක්‍රිප්ටයකට පමණක් යොමු කරන්නේ නම්, එය සැබවින්ම සබැඳියක් නොවන අතර එය එසේ සලකුණු නොකළ යුතුය. සුපුරුදු ප්‍රවේශය වනුයේ onclicka <span>, <div>හෝ, <a>නැතිව එකතු කර hrefඑය යම් ආකාරයකින් මෝස්තර කර එය මත ක්ලික් කළ හැකි බව පැහැදිලි කිරීමයි. StackOverflow [ලියන අවස්ථාවේ දී කළේ මෙයයි; දැන් එය භාවිතා කරයි href="#"].

මෙහි ඇති අවාසිය නම් ඔබට යතුරුපුවරු පාලනය නැති වීමයි, මන්ද ඔබට පරතරයක් / div / ಬೇರ್-ඒ මත ටැබ් කිරීමට හෝ අවකාශය සමඟ එය සක්‍රිය කිරීමට නොහැකි බැවිනි. මෙය සැබවින්ම අවාසියක්ද යන්න රඳා පවතින්නේ මූලද්‍රව්‍යය කුමන ආකාරයේ ක්‍රියාමාර්ගයක් ගැනීමට අදහස් කරන්නේද යන්න මතය. ඔබට යම් උත්සාහයකින්, tabIndexමූලද්‍රව්‍යයට a එකතු කිරීමෙන් සහ යතුරුපුවරුවේ අන්තර්ක්‍රියාකාරිත්වය අනුකරණය කිරීමට උත්සාහ කළ හැකිය . නමුත් එය කිසි විටෙකත් 100% ක් සැබෑ බ්‍රව්සර් හැසිරීම ප්‍රතිනිෂ්පාදනය නොකරනු ඇත, අවම වශයෙන් විවිධ බ්‍රව්සර් යතුරුපුවරුවට වෙනස් ආකාරයකින් ප්‍රතිචාර දැක්විය හැකි නිසා (දෘශ්‍ය නොවන බ්‍රව්සර් ගැන සඳහන් නොකල යුතුය).

ඔබට සැබවින්ම අවශ්‍ය වන්නේ සබැඳියක් නොවන නමුත් මූසිකය හෝ යතුරුපුවරුව මඟින් සාමාන්‍ය ලෙස සක්‍රිය කළ හැකි මූලද්‍රව්‍යයක් නම්, ඔබට අවශ්‍ය වන්නේ <button type="button">(හෝ <input type="button">සරල පා ual මය අන්තර්ගතයන් සඳහා). ඔබට එය නැවත සකස් කිරීම සඳහා සෑම විටම CSS භාවිතා කළ හැකි අතර එමඟින් ඔබට අවශ්‍ය නම් බොත්තමකට වඩා සබැඳියක් මෙන් පෙනේ. නමුත් එය බොත්තමක් මෙන් හැසිරෙන බැවින්, ඔබ එය සැබවින්ම සලකුණු කළ යුතුය.

(*:. අඩවිය කර්තෘත්වය දී, කෙසේ හෝ නිසැකවම ඔවුන් bookmarklets සඳහා ප්රයෝජනවත් වේ. javascript:ව්යාජ-URL ලිපින සංකල්පීය bizarreness වේ: ස්ථානය යොමු නොවන අතරම, නමුත් ඒ වෙනුවට වත්මන් ස්ථානය තුළ ක්රියාකාරී කේතය ඉල්ලා ඔවුන් දැවැන්ත ආරක්ෂක හේතු ඇත. බ්‍රව්සර් සහ වෙබ්අප් යන දෙකටම ගැටළු ඇති අතර ඒවා කිසි විටෙකත් නෙට්ස්කේප් විසින් නිර්මාණය නොකළ යුතුය.


7
@ බොබින්ස් විසින් කරන ලද විශිෂ් post පෝස්ටයට අමතරව: හරස් බ්‍රව්සර් යතුරුපුවරුවේ සැරිසැරීමේ හැකියාව පිළිබඳව මා මීට මාස කිහිපයකට පෙර පර්යේෂණ කිහිපයක් කර ඇත href. ඔබගෙන් සමහරෙකුට එය ප්‍රයෝජනවත් විය හැකිය: jakub-g.github.com/accessibility/onclick
jakub.g

2
HThinkBonobo: 2009 සිට SO යම් අවස්ථාවක වෙනස් වී ඇත! යාවත්කාලීන කරන ලදි.
බොබින්ස්

60
මෙය මතයක් වන අතර ප්‍රශ්නයට පිළිතුරු සපයන්නේ නැත. void(0)බොහෝ අවස්ථාවන්හිදී අවශ්‍ය වේ; "#" යනු එය සමඟ ගැටලු රාශියක් ගෙන එන කඩුල්ලකි (මා ලියන යෙදුමේ එය ක්‍රියා නොකරනු ඇත, එය මෙම පිටුවට මා ගෙන ආවේ).
felwithe

13
මම elfeltwithe සමඟ එකඟ වෙමි. “එය විශේෂිත මාර්ගයක් කරන්න” කියා අන් අයට බල කරන්නේ ඇයි? අවුරුදු 15 ක වැඩසටහන් වලදී, "එය සැමවිටම මේ ආකාරයෙන් කළ යුතුය" යන ආදර්ශ පා people ය මිනිසුන් තමන්ගේම නිර්මාණයක් අවුල් ජාලයකට යොමු නොකරන්නේ කෙසේදැයි මම තවම දැක නැත
ස්ටීවන් ඩි සලාස්

4
කොටස්-හැඳුනුම්පත භාවිතා කිරීම යූඑක්ස් දෘෂ්ටිකෝණයකින් නරක අදහසකි, මන්ද එය preventDefaultභාවිතා නොකරන්නේ නම් ලේඛනය පිටුවේ ඉහළට පනින්නට හේතු වේ. පෝරමයක බොත්තමක් ලෙස නැංගුරමක් භාවිතා කරන විට කරුණාකර එය නොකරන්න.
ජොෂ් හබ්දාස්

124

එයින් අදහස් වන්නේ එය කිසිවක් නොකරන බවයි. එය ඕනෑම තැනක සබැඳිය 'සැරිසැරීම' නොකිරීමට දරන උත්සාහයකි. නමුත් එය නිවැරදි මාර්ගය නොවේ.

ඔබ ඇත්ත වශයෙන්ම සිදුවීම තුළ පමණක් return falseවිය යුතුය onclick:

<a href="#" onclick="return false;">hello</a>

සබැඳිය යම් 'ජාවාස්ක්‍රිප්ට්-වයි' දෙයක් කරන්නේ නම් සාමාන්‍යයෙන් එය භාවිතා වේ. AJAX පෝරමයක් පළ කිරීම, හෝ රූපයක් මාරු කිරීම හෝ වෙනත් දෙයක් වැනි. එවැනි අවස්ථාවක ඔබ නැවත පැමිණීම යනුවෙන් හැඳින්වෙන ඕනෑම කාර්යයක් කරන්න false.

කෙසේ වෙතත්, ඔබේ වෙබ් අඩවිය මුළුමනින්ම පුදුමාකාර කිරීමට, සාමාන්‍යයෙන් ඔබ එකම ක්‍රියාව කරන සබැඳියක් ඇතුළත් කරනු ඇත, එය ගවේෂණය කරන පුද්ගලයා ජාවාස්ක්‍රිප්ට් ධාවනය නොකිරීමට තීරණය කරන්නේ නම්.

<a href="backup_page_displaying_image.aspx"
   onclick="return coolImageDisplayFunction();">hello</a>

33
නැත - ආපසු නොපැමිණීම පෙරනිමි හැසිරීම නවත්වනු ඇත, එබැවින් # කිසි විටෙකත් නොපෙන්වයි
මැග්නර්

22
javascript: url ප්‍රොටෝකෝලය යනු ඩෙෆැක්ටෝ ප්‍රමිතියක් මිස සැබෑ ප්‍රමිතියක් නොවේ. එබැවින් href = "#" onclick = "ආපසු බොරු;" ප්‍රමිති අනුකූල වන අතර href = "javascript: void (0)" එසේ නොවේ, මන්ද එය කළ යුතු දේ නියම කරන නිල ප්‍රමිතියක් නොමැති බැවිනි.
බ්‍රෙටන්

10
ඊට ඉහළින්, ඩග්ලස් ක්‍රොක්ෆර්ඩ් අවලංගු කිරීමට කැමති නැත, එබැවින් jslint ඒ ගැන පැමිණිලි කරනු ඇත. මූලික වශයෙන්, අවලංගු කිරීම ක්‍රියාකරුවෙකු මිස වටිනාකමක් නොවන බැවින් එය නිරයක් ලෙස ව්‍යාකූල වන අතර මේ වැනි බොහෝ ප්‍රශ්න මතු කරයි. එය සම්පූර්ණයෙන්ම වළක්වා ගැනීමට වඩා හොඳය. හාහා.
බ්‍රෙටන්

4
බ්‍රැන්ඩන්: බ්‍රෙන්ටන්ගේ ප්‍රතිචාර බලන්න. මම නිර්දේශ කරන ආකාරය වඩාත්ම සහය දක්වන අතර මගේ ලිපියේ දෙවන කොටසේ සඳහන් කළ පරිදි, 'නිසි' වෙබ් අඩවියක ඔබ කිසි විටෙකත් '#' භාවිතා නොකරනු ඇත, මන්ද ඔබ අඩුපාඩුකම් පාලනය කිරීම සඳහා පසුබැසීම් පද්ධති ලබා දෙන බැවිනි javascript.
දහවල් සිල්ක්

20
සම්පූර්ණයෙන්ම නියම උදාහරණය ඇතුළත් කිරීම සඳහා +1 . ඔබ ජාවාස්ක්‍රිප්ට් හි කරන දේ සඳහා ස්ථිතික HTML පසුබෑමක් නොමැති වුවද, ඔබට සැමවිටම එවැනි දෙයක් කළ හැකිය <a href="enableJavaScriptToSeeMyCompletelyAwesomeSite.html" onclick="completelyAwesome();return false;">.
ග්‍රාන්ට් වැග්නර්

73

"#" එදිරිව ජාවාස්ක්‍රිප්ට් හි හැසිරීමෙහි විශාල වෙනසක් ඇත: අවලංගුය

"#" ඔබව පිටුවෙහි ඉහළට අනුචලනය කරන අතර "javascript: void (0);" නැහැ.

ඔබ ගතික පිටු කේත කරන්නේ නම් මෙය ඉතා වැදගත් වේ. පිටුවේ ඇති සබැඳියක් ක්ලික් කළ පමණින් පරිශීලකයාට නැවත ඉහළට යාමට අවශ්‍ය නැත.


27
Al සැල්වින්: සිදුවීම් හසුරුවන්නා වෙත ආපසු යාමෙන් පිටුවේ සිට ඉහළට හැසිරීම මැඩපවත්වා ගත හැකිය false: onclick="doSomething();return false;"හෝ doSomething()ආපසු පැමිණියහොත් falseඔබට භාවිතා කළ හැකිය onclick="return doSomething();".
ග්‍රාන්ට් වැග්නර්

41
RantGrantWagner - හෝ, අවුරුදු 5 කට පසුව , e.preventDefault().
trysis

1
ඔබ සංස්කරණය / මෙම පිළිතුර මකා සිට ඔබට අවශ්ය විය හැකිය "#"නැත නොවේ ඔබ බොරු නැවත ආ විට ඉහළට අනුචලනය.
නවීන්

4
Av නවින් ඔබ නිවැරදියි, නමුත් දැන් එය යල් පැන ගිය පුරුද්දකි. ට්‍රයිසිස්ගේ අදහස් දැක්වීම දැන් නිවැරදි ක්‍රමය ලෙස සැලකේ.
ටිම් සෙගුයින්

@trysis නැත්නම්, පේළිගත html දී, භාවිතා eventකිරීම සඳහා e. මෙම eventවිචල්ය පේළිගත html ඇතුළත ලබා ගත හැකි onclickහසුරුවන්නා. <a href="#" onclick="event.preventDefault();">...</a>
STEN

71

එය ජාවාස්ක්‍රිප්ට් කාර්යයන් HTML සබැඳිවලට එක් කිරීමේ ඉතා ජනප්‍රිය ක්‍රමයකි.
උදාහරණයක් ලෙස: [Print]බොහෝ වෙබ් පිටුවල ඔබ දකින සබැඳි මේ ආකාරයට ලියා ඇත:

<a href="javascript:void(0)" onclick="callPrintFunction()">Print</a>

තනිවම hrefසිටියදී අපට අවශ්‍ය වන්නේ ඇයි onclick? මක්නිසාද යත්, පරිශීලකයන් නොමැති විට 'මුද්‍රණය' යන hrefපා over යේ සැරිසරන විට , කර්සරය දර්ශකය (👆) වෙනුවට කරත්තයකට (ꕯ) වෙනස් වේ. පමණක් ඇති hrefමත aටැගය අධිසබැඳුමක් ලෙස එය මනාව තහවුරු.

සඳහා විකල්පයක් href="javascript:void(0);"වන්නේ භාවිතා කිරීමයි href="#". මෙම විකල්පයට පරිශීලකයාගේ බ්‍රව්සරයේ ජාවාස්ක්‍රිප්ට් සක්‍රිය කිරීම අවශ්‍ය නොවේ, එබැවින් එය වඩාත් අනුකූල වේ.


7
ජාවාස්ක්‍රිප්ට් අක්‍රිය කර ඇත්නම් ප්‍රයෝජනවත් කිසිවක් නොලැබේ.
ජේසන්

12
ඔබට hrefඇඟිලි තුඩු කර්සරය ලබා ගැනීමට අවශ්‍ය නැත ; ඒ සඳහා අවශ්‍ය වන්නේ ටිකක් CSS ය.
ජෝන් මොන්ට්ගොමරි

1
ඔබ ජාවාස්ක්‍රිප්ට් ශ්‍රිතය onclick වෙනුවට href හි තබන්නේ නැත්තේ ඇයි?
සිද්ධාර්ථ ගාන්ධි

2
මම idSid සමඟ එකඟ වෙමි - ඔබ එය ජාවාස්ක්‍රිප්ට් ශ්‍රිතයක් අවුලුවාලීමට භාවිතා කරන්නේ නම් <a href="javascript:callPrintFunction()">එය වඩාත් පිරිසිදු වේ (එය ඔබව කොතැනකටවත් buttonගෙන aනොයන්නේ නම් එය බොහෝ විට එය නැචෝර් එකක් විය යුතුය ).
ඩේව්මොන්ගෝස්

href="#"අශෝභන විස්මයන් වලට තුඩු දිය හැකිය - ගබ්සා කරන ලද xhr ඉල්ලීම් වැනි, එම සබැඳිය ක්ලික් කිරීමකින් කැඳවනු ලැබේ. පරිශීලකයා වෙබ් අඩවියේ මුල නොවන ලිපිනයක සිටී නම්, ඔයිඩ් ලොග් වීම අවලංගු කරන ලද වෙබ් අඩවියක් නිදොස් කිරීම මට මෑතකදී දුෂ්කර විය. #xhr ඉල්ලීම සම්පූර්ණ වීමට පෙර ලිපිනය නැවත පූරණය කිරීමට href හේතු විය.
JustAMartin

46

සෑම විටම ඔබට, ඔබේ පිළිබඳ තියෙන <a> තිබිය යුතු වන ටැග්. 'නිර්වචනය නොකළ' නැවත ලබා දෙන ජාවාස්ක්‍රිප්ට් ශ්‍රිතයක් ඇමතීමෙන් පමණක් හොඳ වනු ඇත. එබැවින් '#' වෙත සම්බන්ධ වනු ඇත.

ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් 6 හි නැංගුරම් ටැගයකින් තොරව a:hoverශෛලිය අදාළ නොවේ.

ඔව්, එය භයානක හා මනුෂ්‍යත්වයට එරෙහි සුළු අපරාධයකි, නමුත් නැවතත් එය එසේ වන්නේ පොදුවේ ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් 6 ය.

මම හිතනවා මේක උදව් වෙයි කියලා.

ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් 6 ඇත්ත වශයෙන්ම මනුෂ්‍යත්වයට එරෙහි විශාල අපරාධයකි.


26

අඩු අක්ෂර අවශ්‍ය නිසා හුදෙක් නිර්වචනය නොකල විට පරික්ෂා කිරීමේදී ඔබ සමහර විට අවලංගු 0 දකිනු ඇති බව සඳහන් කිරීම වටී.

උදාහරණයක් වශයෙන්:

something === undefined

එදිරිව.

something === void 0

සමහර කුඩා කිරීමේ ක්‍රම මෙම හේතුව නිසා නිර්වචනය නොකළ අවලංගු 0 සමඟ ප්‍රතිස්ථාපනය කරයි.


10
සැලකිය යුතු උදාහරණයක් වන්නේ ටයිප්ස්ක්‍රිප්ට් ( සජීවී උදාහරණය ), එය පෙරනිමි පරාමිති අගයන් පරික්ෂා කිරීමට එරෙහිව සම්පාදනය කිරීමයි void 0. බොහෝ ක්‍රම පෙරනිමි පරාමිති අගයන් භාවිතා කරන විට අක්ෂර 3 වෙනස ඉක්මනින් එකතු වේ.
ජෝන් වයිස්

1
"සමහර කුඩා කිරීමේ ක්‍රම මෙම හේතුව නිසා නිර්වචනය නොකළ අවලංගු 0 සමඟ ප්‍රතිස්ථාපනය කරයි." අවසාන වශයෙන් මම එය තේරුම් ගත්තා! සම්පූර්ණ පිළිතුරට ස්තූතියි qsquall.
අහමඩ් මහමුද්

23

javascript:void(0)HTML හි කතුවරයා බොත්තම් මූලද්‍රව්‍යය වෙනුවට නැංගුරම් අංගය අනිසි ලෙස භාවිතා කරන බව මාධ්‍යයන්හි භාවිතය .

පිටුව නැවුම් වීම වැළැක්වීම සඳහා "#" හෝ "ජාවාස්ක්‍රිප්ට්: අවලංගු (0)" ලෙස සකසා ව්‍යාජ බොත්තම් නිර්මාණය කිරීම සඳහා ඇන්කර් ටැග් බොහෝ විට ඔන්ක්ලික් සිද්ධිය සමඟ අනිසි ලෙස භාවිතා කරයි. මෙම අගයන් සබැඳි පිටපත් කිරීමේදී / ඇදගෙන යාම, නව ටැබ් / කවුළුවක සබැඳි විවෘත කිරීම, පොත් සලකුණු කිරීම සහ ජාවාස්ක්‍රිප්ට් තවමත් බාගත කරන විට, දෝෂ ඉවත් වන විට හෝ අක්‍රීය කරන විට අනපේක්ෂිත ලෙස හැසිරීමට හේතු වේ. මෙය උපකාරක තාක්ෂණයන් සඳහා වැරදි අර්ථකථන ද ගෙන එයි (උදා: තිර පා .කයින්). මෙම අවස්ථා වලදී, ඒ <button>වෙනුවට භාවිතා කිරීම රෙකමදාරු කරනු ලැබේ . පොදුවේ ඔබ භාවිතා කළ යුත්තේ නිසි URL භාවිතා කරමින් සංචලනය සඳහා නැංගුරමක් පමණි.

මුලාශ්‍රය: එම්ඩීඑන් <a>පිටුව .


4
පැරණි ප්‍රශ්නයක් මත අර්ථකථන html ගෙන ඒම සඳහා +1 ... සබැඳි ස්ථාන, බොත්තම් දේවල් කරයි - අපට එය බොත්තමක් මෙන් පෙනෙන්නට අවශ්‍ය නැතිනම්, අපි මෝස්තරය ඉවත් කළ යුතුය.
kevlarr

මෙයට විශාල ව්‍යතිරේකය වනුයේ රූප සිතියම් වන අතර එය ජාවාස්ක්‍රිප්ට් ක්‍රියාත්මක කිරීමට අවශ්‍ය විය හැකිය; එය බොත්තමක් නොවන බැවින් එය බහු කෝණික මායිම් ඇති සම්බන්ධකයකි, මෙය “එකම” ක්‍රමයයි.

18

voidundefinedඅගය නැවත ලබා දීමට භාවිතා කරන ක්‍රියාකරු වන බැවින් බ්‍රව්සරයට නව පිටුවක් පූරණය කිරීමට නොහැකි වනු ඇත.

වෙබ් බ්‍රව්සර් උත්සාහ කර URL එකක් ලෙස භාවිතා කරන ඕනෑම දෙයක් ගෙන එය ජාවාස්ක්‍රිප්ට් ශ්‍රිතයක් නම් මිස එය පුරවනු ඇත. උදාහරණයක් ලෙස, අපි මේ වගේ සබැඳියක් ක්ලික් කළහොත්:

<a href="javascript: alert('Hello World')">Click Me</a>

නව පිටුවක් පූරණය නොකර අනතුරු ඇඟවීමේ පණිවිඩයක් දිස්වනු ඇති අතර එයට හේතුව alertශුන්‍ය අගයක් ලබා දෙන ශ්‍රිතයකි. මෙයින් අදහස් කරන්නේ බ්‍රව්සරය නව පිටුවක් පූරණය කිරීමට උත්සාහ කරන විට එය අහෝසි වන අතර පූරණය කිරීමට කිසිවක් නොමැති බවයි.

අවලංගු ක්‍රියාකරු ගැන සටහන් කළ යුතු වැදගත් දෙයක් නම් එයට වටිනාකමක් අවශ්‍ය වන අතර එය තනිවම භාවිතා කළ නොහැක. අප එය මේ ආකාරයෙන් භාවිතා කළ යුතුය:

<a href="javascript: void(0)">I am a useless link</a>

1
මිනිසුන් ජාවාස්ක්‍රිප්ට් භාවිතා කරන බව මම දැක ඇත්තෙමි: අවලංගු වෙනුවට ශුන්‍යයි ... නමුත් එය ගැටළුවක්. ෆයර්ෆොක්ස් හි ක්‍රෝම් ශුන්‍ය ක්‍රියා කරයි, එය පිටුව ශුන්‍යව පැටවීමට උත්සාහ කරයි. ඔබ යාවත්කාලීන කිරීම සතුටක්. සිත්ගන්නා දෝෂයකි.
ගේවින් පිකින්

ජාවාස්ක්‍රිප්ට් වැනි කේත බේස් එකක වෙනත් භාවිතයන් මට හමු විය: ශුන්‍ය නමුත් ජාවාස්ක්‍රිප්ට් සමඟ: ශුන්‍ය () නිර්වචනය කර නැති නිසා එය ක්‍රියාත්මක වේ.
ගේවින් පිකින්

1
ඉතින් මූලික වශයෙන් එය jquery හි prevendDefault හා නැවත අසත්‍යය වැනිද?
රොබට් රොචා

16

මෙම සංකල්පය අවබෝධ කර ගැනීම සඳහා පළමුව ජාවාස්ක්‍රිප්ට් හි ඇති අවලංගු ක්‍රියාකරු තේරුම් ගත යුතුය.

අවලංගු ක්‍රියාකරු සඳහා වන වාක්‍ය void «expr»ඛණ්ඩය : එය එක්ස්ප්‍රස් තක්සේරු කර නැවත අර්ථ දක්වා නැත.

ඔබ ශ්‍රිතයක් ලෙස අවලංගු කිරීම ක්‍රියාත්මක කරන්නේ නම්, එය පහත පරිදි වේ:

function myVoid(expr) {
    return undefined;
}

මෙම අවලංගු ක්‍රියාකරුට එක් වැදගත් භාවිතයක් ඇත - එනම් ප්‍රකාශනයක ප්‍රති result ලය ඉවතලීම.

සමහර අවස්ථාවන්හිදී, ප්‍රකාශනයක ප්‍රති result ලයට ප්‍රතිවිරුද්ධ ලෙස නිර්වචනය නොකළ යුතු ය. එවිට එම ප්‍රති .ලය ඉවතලීමට අවලංගු කිරීම භාවිතා කළ හැකිය. එවැනි එක් තත්වයකට ජාවාස්ක්‍රිප්ට් ඇතුළත් වේ: URL, සබැඳි සඳහා වළක්වා ගත යුතු නමුත් පොත් සලකුණු සඳහා ප්‍රයෝජනවත් වේ. ඔබ එම URL වලින් එකකට පිවිසෙන විට, බොහෝ බ්‍රව්සර් වත්මන් ලේඛනය ප්‍රතිස්ථාපනය කරන්නේ URL වල “අන්තර්ගතය” තක්සේරු කිරීමේ ප්‍රති result ලයෙනි, නමුත් ප්‍රති result ලය නිර්වචනය නොකළහොත් පමණි. එබැවින්, දැනට ප්‍රදර්ශනය කර ඇති අන්තර්ගතය වෙනස් නොකර නව කවුළුවක් විවෘත කිරීමට ඔබට අවශ්‍ය නම්, ඔබට පහත සඳහන් දෑ කළ හැකිය:

javascript:void window.open("http://example.com/")

2
'අවලංගු කිරීම' සඳහා වන තර්කය හරියටම පැහැදිලි කිරීමට ස්තූතියි! අනෙක් පිළිතුරු වල එය පැහැදිලි නැත, “අවලංගු කිරීම තර්කයක් ගනී” යන්න පමණි.
dbeachy1

හොඳ පිළිතුරක් නමුත් එක් විස්තරයක්, අවලංගු කිරීම ක්‍රියාත්මක කිරීම වැනි දෙයක් වනු ඇත: function myVoid(expr) { expr(); return undefined; } ඔබට එක්ස්පර් ()
ජුවාන්මා මෙනෙන්ඩෙස්

1
U ජුවාන්මා මෙනෙන්ඩෙස්: ඇත්ත නොවේ. කැඳවූ exprවිට දැනටමත් ඇගයීමට ලක් කර ඇත myVoid()( එම ප්‍රකාශනයේ
ප්‍රති

DUdoG මට කුතුහලයක් තිබෙනවා, ඔබ ඒ මිනිසුන් දන්නේ කෙසේද? කරුණාකර ඔබට පැහැදිලි කළ හැකිද?
ජුවාන්මා මෙනෙන්ඩෙස්

U ජුවාන්මා මෙනෙන්ඩෙස්: ශ්‍රිතය ඇමතීමට පෙර ශ්‍රිත පරාමිතීන්ගේ ප්‍රකාශන සෑම විටම ඇගයීමට ලක් කෙරේ. කණගාටුයි, එය පැහැදිලි කරන නමුත් ඔබම උත්සාහ කරන කිසිදු ලේඛනයක් මා සතුව නොමැත: function() { alert("foo"); }එය වලංගු ප්‍රකාශනයකි . void(function() { alert("foo"); })ප්රතිලාභ undefinedහා නැත නොවන බැවින්ද, අවදි පෙන්වන්න myVoid(function() { alert("foo"); })(නැත ඔබේ අනුවාදය, යන එක් කරන්නේ ගෝපාල් යාදෙව් ).
උදෝ ජී

14

මෙම voidක්රියාකරු ලබා දී ප්රකාශනය හා පසුව ප්රතිලාභ නිර්වචනය නොකළ පරීක්ෂා කර බැලීමයි. එය පිටුව නැවුම් කිරීම වළක්වයි.


11

වෙබ් සංවර්ධකයින් භාවිතා javascript:void(0)කරන්නේ එය aටැගයේ පෙරනිමි හැසිරීම වැළැක්වීමට ඇති පහසුම ක්‍රමය වන බැවිනි . void(*anything*)ප්‍රතිලාභ undefinedසහ එය ව්‍යාජ අගයකි. හා falsy අගය නැවත වගේ return falseතුළ onclickඋත්සවය aඑහි සැකසුම් හැසිරීම වලකන ටැගය.

එබැවින් ටැගයේ javascript:void(0)පෙරනිමි හැසිරීම වැළැක්වීම සඳහා සරලම ක්‍රමය යැයි මම සිතමි a.


8

භාවිතා කළ හැකි සංදර්ශක වස්තුවක් බවට පත් කිරීම සඳහා සබැඳියකට HREF ඉලක්කයක් තිබිය යුතුය.

බොහෝ බ්‍රව්සර් උසස් ජාවාස්ක්‍රිප්ට් අ

<A HREF="" 

ටැගය වැනි:

<A href="JavaScript:var elem = document.getElementById('foo');" 

බොහෝ බ්‍රව්සර්වල ඇති HREF ටැගය සුදු අවකාශයට ඉඩ නොදේ, නැතහොත් හිස් අවකාශය% 20 බවට පරිවර්තනය කරයි, ඔබේ ජාවාස්ක්‍රිප්ට් පරිවර්තකයාට කිසිසේත්ම නිෂ් less ල වන SPACE හි HEX සමාන වේ.

එබැවින් ඔබට ජාවාස්ක්‍රිප්ට් ක්‍රියාත්මක කිරීම සඳහා HREF ටැගයක් භාවිතා කිරීමට අවශ්‍ය නම්, ඔබ HREF FIRST සඳහා වලංගු අගයක් නියම කළ යුතු අතර එය ඉතා සංකීර්ණ නොවන (සුදු අවකාශය අඩංගු නොවේ), ඉන්පසු OnClick වැනි සිදුවීම් ආරෝපණ ටැගයක ජාවාස්ක්‍රිප්ට් ලබා දෙන්න. , OnMouseOver, OnMouseOut, ආදිය.

සාමාන්‍ය පිළිතුර නම් මේ වගේ දෙයක් කිරීමයි:

<A HREF="#" onclick="var elem = document.getElementById('foo');">Get the object</a>

මෙය හොඳින් ක්‍රියාත්මක වන නමුත් පවුම් ලකුණ / හැෂ් ටැගය නිසා පිටුව ඉහළට පනින්න.

HREF ටැගයක රාත්තල් ලකුණක් / හැෂ් ටැගයක් ලබා දීමෙන් ඇත්ත වශයෙන්ම මූල නැංගුරම නියම කරයි, එය සෑම විටම පෙරනිමියෙන් පිටුවේ ඉහළින්ම, HREF ටැගයක් තුළ NAME ගුණාංගය සඳහන් කිරීමෙන් ඔබට වෙනත් ස්ථානයක් නියම කළ හැකිය.

<A NAME='middleofpage'></A>

එවිට ඔබට ඔබේ HREF ටැගය 'මිඩ්ල්ෆේජ්' වෙත මාරු කර ඔන්ක්ලික් ඉසව්වේ ජාවාස්ක්‍රිප්ට් ක්‍රියාත්මක කළ හැකිය.

<A HREF="#middleofpage" onclick="var elem = document.getElementById('foo');">Get the object</a>

එම සබැඳිය ඔබට පනින්නට අවශ්‍ය නැති අවස්ථා බොහොමයක් ඇත, එවිට ඔබට කරුණු දෙකක් කළ හැකිය:

<A HREF="#thislinkname" name='thislinkname' onclick="var elem = document.getElementById('foo');">Get the object</a>

දැන් එය ක්ලික් කළ විට කොතැනකවත් නොයනු ඇත, නමුත් එය පිටුවෙහි වර්තමාන දර්ශනපත්‍රයෙන් නැවත කේන්ද්‍රගත වීමට හේතු විය හැක. මේක ලස්සන නැහැ. HREF භාවිතා කරමින්, නමුත් ඉහත කිසිවක් නොකර, මාර්ගස්ථ ජාවාස්ක්‍රිප්ට් ලබා දීමට ඇති හොඳම ක්‍රමය කුමක්ද? ජාවාස්ක්‍රිප්ට්: අවලංගු (0);

<A HREF="JavaScript:void(0);" onclick="var elem = document.getElementById('foo');">Get the object</a>

මෙය බ්‍රව්සරයට දැන් යන්න කියා පවසන නමුත් ඒ වෙනුවට වලංගු ජාවාස්ක්‍රිප්ට් ක්‍රියාත්මක කරන්න: අවලංගු (0); HREF ටැගය තුළ පළමුව ක්‍රියා කරන්නේ එහි හිස් අවකාශයක් නොමැති නිසා සහ URL ලෙස විග්‍රහ නොකෙරෙන බැවිනි. එය සම්පාදකයා විසින් ක්‍රියාත්මක කරනු ඇත. VOID යනු යතුරුපදයක් වන අතර එය 0 ප්‍රතිලාභ පරාමිතියක් සමඟ සපයනු ලබන අතර, එය 0 නියම නොකොට සිදුවිය හැකි ප්‍රතිලාභ අගයක් හැසිරවීමට තවත් සම්පත් භාවිතා නොකරයි (එය වඩා මතක-කළමනාකරණ / කාර්ය සාධන හිතකාමී වේ).

ඊළඟට සිදුවන්නේ OnClick ක්‍රියාත්මක වීමයි. පිටුව චලනය නොවේ, දර්ශනය අනුව කිසිවක් සිදු නොවේ.


මේ වගේ නැංගුරමක් හැසිරවිය හැකි විවිධ ක්‍රම පැහැදිලි කිරීම සඳහා +1 . <a>මූලද්රව්යයක් සෑම විටම කොහේ හෝ යා යුතු බව මගේ මතයයි ; සමහර ජාවාස්ක්‍රිප්ට් ක්‍රියාත්මක කිරීමට එය පිටුවේ පමණක් තිබේ නම්, ඒ <button>වෙනුවට භාවිතා කළ යුතුය. භාවිතා <button>කිරීම වඩාත් අර්ථාන්විත වන අතර, නැංගුරමකට අනවසරයෙන් ඇතුල් විය යුත්තේ කුමක් ද යන්න පිළිබඳ මෙම සමස්ත විවාදයෙන් ඔබව ආරක්ෂා hrefකරයි. සංස්කරණය කරන්න: පහත දැක්වෙන රොනී රොයිස්ටන්ගේ පිළිතුර දැනටමත් මෙම තර්කය ආවරණය කර ඇති බව පෙනේ.
රබදාෂ් 8820

1

JavaScript: URL පසෙකට; කෙටි කේත ලිවීමට අවලංගු කිරීම ප්‍රයෝජනවත් වන්නේ මෙහිදීය.

var error1 = false,
    error2 = false,
    error3 = false;

function error1() {

  error1 = true;
}

function myFunction() {

  // You can easily return and call a function at once, if you don't care about myFunction's return value
  if (!someCondition1)
    return error1();

  // What if you want to set a value first?
  if (!someCondition2) {
    error2 = true;
    return
  }

  // Shortest way to return and set a value at once
  if (!someCondition3)
    return void(error3 = true);

  // More code goes here
}

පහත් කොට සැලකූ අයට අවම වශයෙන් ඔවුන් පහත් වූයේ මන්දැයි කිව හැකි නම් හොඳයි. එය ප්‍රශ්නයේ මාතෘකාවක් නොවන බව මම දනිමි, නමුත් සෙවුම් ප්‍රති .ල වලින් මෙහි පැමිණෙන සියලු පුද්ගලයින් ගැන මම සිතමි.
මැකීජ් ක්‍රව්සික්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.