ජාවාස්ක්‍රිප්ට් සබැඳි, “#” හෝ “ජාවාස්ක්‍රිප්ට්: අවලංගු (0)” සඳහා මා භාවිතා කළ යුත්තේ කුමන “href” අගයද?


4080

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

function myJsFunc() {
    alert("myJsFunc");
}
<a href="#" onclick="myJsFunc();">Run JavaScript Code</a>

හෝ

function myJsFunc() {
    alert("myJsFunc");
}
 <a href="javascript:void(0)" onclick="myJsFunc();">Run JavaScript Code</a>


203
මට යමක් මග හැරී ඇත්නම් <a href="javascript:void(0)" onclick="myJsFunc();">මිස කිසිම තේරුමක් නැත. ඔබ psuedo-protocol භාවිතා කළ යුතු නම්, ඔබට එම javascript:ගුණාංගයද අවශ්‍ය නොවේ onclick. <a href="javascript:myJsFunc();">හොඳින් කරයි.
වෙස්ලි මර්ච්

65
Es වෙස්ලිමර්ච් - myJsFunc()ප්‍රතිලාභ අගයක් ඇත්නම් , ඔබේ පිටුව කැඩී යනු ඇත. jsfiddle.net/jAd9G ඔබට තවමත් එසේ භාවිතා කිරීමට සිදුවේ void: <a href="javascript:void myJsFunc();">. එහෙත්, එවිට හැසිරීම තවමත් වෙනස් වේ. සන්දර්භය මෙනුව හරහා සබැඳිය යෙදීමෙන් clickසිදුවීම අවුලුවන්නේ නැත .
gilly3

38
ඇයි නැත්තේ <a href="javascript:;" onclick="myEvent()"?
3k-

26
javascript:;ටයිප් කිරීමට වඩා ඉක්මන් වේjavascript:void(0)
මයික් කෝසර්

78
මෙය දෙස බලන විට මුලින්ම සිතුවේ: " <a>ඔබට කිරීමට අවශ්‍ය වන්නේ ස්වදේශීය බ්‍රව්සර් විශේෂාංගය හරහා වෙනත් පිටුවක් විවෘත නොකොට, ජාවාස්ක්‍රිප්ට් 'ක්‍රියාව' අවුලුවාලීමට නම් ඔබ spanටැගයක් භාවිතා කරන්නේ ඇයි? js-triggerබොහෝ විට වඩා හොඳ වනු ඇත ". නැත්නම් මට යමක් මග හැරී තිබේද?
ඇඩ්‍රියන් බී

Answers:


2164

මම පාවිච්චි කරනවා javascript:void(0).

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

function doSomething() {
    //Some code
    return false;
}

නමුත් පසුව ඔවුන් return doSomething()ඔන්ක්ලික් භාවිතා කිරීමට අමතක කර භාවිතා කරන්න doSomething().

මග හැරීමට දෙවන හේතුව නම්, කැඳවන ලද ශ්‍රිතයේ දෝෂයක් ඇති වුවහොත් #අවසාන return false;ක්‍රියාව ක්‍රියාත්මක නොවේ. එබැවින් සංවර්ධකයින් විසින් හැඳින්වෙන ශ්‍රිතයේ කිසියම් දෝෂයක් නිසි ලෙස හැසිරවීමට මතක තබා ගත යුතුය.

තුන්වන හේතුව නම් onclickසිදුවීම් දේපල ගතිකව පවරා ඇති අවස්ථා තිබීමයි. එක් ඇමුණුම් ක්‍රමයක් හෝ වෙනත් ක්‍රමයක් සඳහා ශ්‍රිතය කේත කිරීමකින් තොරව ශ්‍රිතයක් ඇමතීමට හෝ ගතිකව පැවරීමට මම කැමැත්තෙමි. එබැවින් onclickHTML සලකුණු වල මගේ (හෝ ඕනෑම දෙයක්) මේ වගේ ය:

onclick="someFunc.call(this)"

හෝ

onclick="someFunc.apply(this, arguments)"

භාවිතා javascript:void(0)කිරීමෙන් ඉහත සඳහන් සියලු හිසරදය මඟහරවා ගත හැකි අතර, අවාසිය පිළිබඳ උදාහරණ කිසිවක් මට හමු නොවීය.

එබැවින් ඔබ හුදකලා සංවර්ධකයෙකු නම් ඔබට පැහැදිලිවම ඔබේ තේරීම කළ හැකිය, නමුත් ඔබ කණ්ඩායමක් ලෙස වැඩ කරන්නේ නම් ඔබට එක්කෝ සඳහන් කළ යුතුය:

භාවිතා කරන්න href="#", onclickසෑම විටම return false;අවසානයේ අඩංගු වන බවට වග බලා ගන්න , ඕනෑම කැඳවුම් ශ්‍රිතයක් දෝෂයක් නොදක්වන බවත්, ඔබ ශ්‍රිතයක් ගතිකව onclickදේපල සමඟ සම්බන්ධ කරන්නේ නම් එය නැවත දෝෂයක් නොදක්වන බවට වග බලා ගන්න false.

හෝ

භාවිත href="javascript:void(0)"

දෙවැන්න පැහැදිලිවම සන්නිවේදනය කිරීමට වඩා පහසු ය.


331
මම සෑම විටම නව ටැබ් එකක සෑම සබැඳියක්ම විවෘත කරන අතර මිනිසුන් මෙම href="javascript:void(0)"ක්‍රමය භාවිතා කරන විට මා පෞද්ගලිකව එයට වෛර කිරීමට හේතුව මෙයයි
Timo Huovinen

184
කණගාටුයි, මෙම පිළිතුරට මෙතරම් ඉහළ නැගීම් ඇත්තේ මන්ද? ඕනෑම භාවිතයක් javascript:නරක පුරුද්දක් ලෙස සැලකිය යුතුය.
ලන්කිමාර්ට්

52
ඊළඟ පිළිතුරු දෙක මෙයට වඩා හොඳ සහ සාධාරණ ය. පළමු තර්ක දෙක අවලංගු event.preventDefault()වන්නේ පෙරනිමි හැසිරීම වැළැක්වීමට හරියටම ඇති නිසාය (මෙම අවස්ථාවේ දී පිටුවේ ඉහළට පැනීම වැනි) සහ සියලු return false;උමතුවෙන් තොරව වඩා හොඳ කාර්යයක් කරන්න .
sudee

136
වේගයෙන් ඉදිරියට 2013: javascript:void(0)උල්ලංඝනය අන්තර්ගත ආරක්ෂක ප්රතිපත්ති සාන්ද්ර ගත කල සූර්ය බලශක්ති පද්ධති සක්රීය HTTPS පිටු මත. එක් විකල්පයක් වනුයේ භාවිතා කිරීම href='#'සහ event.preventDefault()හසුරුවන්නා වීමයි, නමුත් මම මේකට එතරම් කැමති නැත. සමහර විට ඔබට භාවිතා කිරීමට සම්මුතියක් ඇති කර ගත හැකි href='#void'අතර පිටුවේ කිසිදු අංගයක් නොමැති බවට වග බලා ගන්න id="void". ඒ ආකාරයෙන්, නොපවතින නැංගුරම වෙත සබැඳියක් ක්ලික් කිරීමෙන් පිටුව අනුචලනය නොවේ.
jakub.g

24
ඔබට "#" භාවිතා කළ හැකි අතර පසුව "#" සමඟ ඇති සියලුම සබැඳිවලට ක්ලික් කිරීමේ සිදුවීමක් බැඳ තබන්න href. මෙය jQuery සමඟ සිදු කරනු ඇත:$('a[href="#"]').click(function(e) { e.preventDefault ? e.preventDefault() : e.returnValue = false; });
නේතන්

1326

එසේ නොවේ.

ඔබට සත්‍ය URL එකක් තිබිය හැකි නම් එය HREF ලෙස භාවිතා කරන්න. අළුත් ටැබ් එකක් විවෘත කිරීමට යමෙකු ඔබගේ සබැඳිය මත ක්ලික් කළහොත් හෝ ඔවුන් ජාවාස්ක්‍රිප්ට් අක්‍රීය කර ඇත්නම් ඔන්ක්ලික් ක්ලික් නොකරයි.

එය කළ නොහැකි නම්, ඔබ අවම වශයෙන් ජාවාස්ක්‍රිප්ට් සහ සුදුසු ක්ලික් සිදුවීම් හසුරුවන්නන් සමඟ ලේඛනයට නැංගුරම් ටැගය එන්නත් කළ යුතුය.

මෙය සැමවිටම කළ නොහැකි බව මම තේරුම් ගතිමි, නමුත් මගේ මතය අනුව ඕනෑම පොදු වෙබ් අඩවියක් සංවර්ධනය කිරීමේදී එය උත්සාහ කළ යුතුය.

පරීක්ෂා කරන්න වන්නේ පැතලි JavaScript හා ප්රගතිශීලී වැඩි දියුණු (දෙකම විකිපීඩියා, නිදහස් විශ්වකෝෂය).


19
"ජාවාස්ක්‍රිප්ට් සහ සුදුසු ක්ලික් සිදුවීම් හසුරුවන්නන් සමඟ ලේඛනයට නැංගුරම් ටැගය එන්නත් කළ හැකි ආකාරය පිළිබඳ උදාහරණයක් ඔබට දිය හැකිද?
user456584

11
මූලද්‍රව්‍යයක් වීමට ඉඩ දීම සඳහා හුදෙක් භාවිතා කිරීමට අදහස් කරන්නේ නම් නැංගුරම් ටැගය කිසිසේත් එන්නත් කරන්නේ ඇයි?) ක්ලික් කළ ආ) “දර්ශක” කර්සරය පෙන්වන්න. මෙම තත්වය තුළ නැංගුරම් ටැගයක් එන්නත් කිරීම පවා අදාළ නොවන බව පෙනේ.
පොඩි කරන්න

12
+1 දෙකටම නොවේ, නමුත් අධික ප්‍රවේශයන් ඇත. සත්‍යය එක්කෝ භාවිතා කිරීම javascript:හෝ #දෙකම නරක පුරුදු වන අතර ධෛර්යමත් නොකළ යුතුය. ලස්සන ලිපි btw.
ලන්කිමාර්ට්

13
r ක්‍රෂ්: මම ඩිව් හෝ ස්පෑන් භාවිතා නොකරමි; අවංකවම, මෙය පෙනෙන්නේ එයම <button>සෑදී ඇති ආකාරයටමයි. නමුත් එකඟ විය: එය <a>සම්බන්ධ වීමට සුදුසු ස්ථානයක් නොමැති නම් එය විශේෂයෙන් විය යුතු නොවේ .
cHao

14
HcHao බොත්තම සමහර විට හොඳම තේරීම වේ. ප්‍රධාන කරුණ නම් HTML මූලද්‍රව්‍යය එහි පෙරනිමි ඉදිරිපත් කිරීමේ පෙනුම මත පදනම්ව තෝරා නොගත යුතු අතර එය ලේඛනයේ ව්‍යුහයට එහි වැදගත්කමයි.
පොඩි කරන්න

775

කරන්නේ <a href="#" onclick="myJsFunc();">Link</a>හෝ <a href="javascript:void(0)" onclick="myJsFunc();">Link</a>හෝ වෙන ඕනෑම දෙයක් සඳහා අඩංගු onclickවිශේෂණය - දැන් එය නරක පුරුද්දක් විය හැකි නමුත්, වසර පහකට පෙර, හරිද ආපසු විය. මෙන්න හේතුව:

  1. එය බාධාකාරී ජාවාස්ක්‍රිප්ට් භාවිතය ප්‍රවර්ධනය කරයි - එය නඩත්තු කිරීමට අපහසු සහ පරිමාණය කිරීමට අපහසු වී ඇත. Unobtrusive JavaScript හි මේ පිළිබඳ වැඩි විස්තර .

  2. ඔබ ඔබේ කාලය ගත කරන්නේ ඇදහිය නොහැකි තරම් ඕනෑවට වඩා වාචික කේතයක් ලිවීමටයි - එය ඔබගේ කේත පදනමට ඉතා අල්පය (ඇත්නම්).

  3. අපේක්ෂිත ප්‍රති .ලය ලබා ගැනීම සඳහා වඩා හොඳ, පහසු සහ වඩා නඩත්තු කළ හැකි සහ පරිමාණය කළ හැකි ක්‍රම දැන් තිබේ.

බාධා රහිත ජාවාස්ක්‍රිප්ට් ක්‍රමය

කිසිසේත්ම hrefලක්ෂණයක් නැත ! ඕනෑම හොඳ CSS යළි පිහිටුවීමක් අස්ථානගත වූ පෙරනිමි කර්සර විලාසය ගැන සැලකිලිමත් වනු ඇත, එබැවින් එය ගැටළුවක් නොවේ. ඉන්පසු ඔබේ ජාවාස්ක්‍රිප්ට් ක්‍රියාකාරිත්වය ඔබේ සලකුණු කිරීම වෙනුවට ජාවාස්ක්‍රිප්ට් තර්කනය ජාවාස්ක්‍රිප්ට් තුළ රැඳී ඇති බැවින් වඩාත් නඩත්තු කළ හැකි අලංකාර සහ බාධා රහිත හොඳම භාවිතයන් භාවිතා කරන්න - ඔබේ තර්කනය බෙදීමට අවශ්‍ය මහා පරිමාණ ජාවාස්ක්‍රිප්ට් යෙදුම් සංවර්ධනය කිරීමට පටන් ගන්නා විට එය අත්‍යවශ්‍ය වේ. බ්ලැක් බොක්ස් සංරචක සහ සැකිලි. මහා පරිමාණ ජාවාස්ක්‍රිප්ට් යෙදුම් ගෘහ නිර්මාණ ශිල්පයෙහි මේ පිළිබඳ වැඩි විස්තර

සරල කේත උදාහරණය

// Cancel click event
$('.cancel-action').click(function(){
    alert('Cancel action occurs!');
});

// Hover shim for Internet Explorer 6 and Internet Explorer 7.
$(document.body).on('hover','a',function(){
    $(this).toggleClass('hover');
});
a { cursor: pointer; color: blue; }
a:hover,a.hover { text-decoration: underline; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a class="cancel-action">Cancel this action</a>

බ්ලැක්බොක්ස් කළ Backbone.js උදාහරණයක්

පරිමාණය කළ හැකි, කළු කොටු කළ, Backbone.js සංරචක උදාහරණය සඳහා - මෙම වැඩ කරන jsfiddle උදාහරණය මෙතැනින් බලන්න . අපි නොවරදින ජාවාස්ක්‍රිප්ට් භාවිතයන් භාවිතා කරන ආකාරය සැලකිල්ලට ගන්න, සහ ඉතා සුළු කේතයක විවිධ සංරචක අවස්ථා අතර අතුරු ආබාධ හෝ ගැටුම් වලින් තොරව පිටුව පුරා කිහිප වතාවක් පුනරාවර්තනය කළ හැකි සංරචකයක් ඇත. පුදුම!

සටහන්

  • මූලද්රව්යයේ hrefගුණාංගය ඉවත් aකිරීමෙන් tabප්රධාන සංචාලනය භාවිතයෙන් මූලද්රව්යයට ප්රවේශ විය නොහැක . tabයතුර හරහා එම මූලද්‍රව්‍යයන්ට ප්‍රවේශ වීමට ඔබ කැමති නම් , ඔබට tabindexගුණාංගය සැකසිය හැකිය , නැතහොත් buttonඒ වෙනුවට මූලද්‍රව්‍ය භාවිතා කළ හැකිය. ට්රැකර් 1 හි පිළිතුරේ සඳහන් පරිදි සාමාන්‍ය සබැඳි මෙන් ඔබට පහසුවෙන් බොත්තම් අංග මෝස්තර කළ හැකිය .

  • මූලද්රව්යයේ ඇති hrefගුණාංගය ඉවත් කිරීමෙන් ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් 6 සහ ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් 7 මෝස්තරය නොකිරීමට හේතු වනු ඇත , ඒ නිසා අපි ඒ වෙනුවට මෙය ඉටු කිරීම සඳහා සරල ජාවාස්ක්‍රිප්ට් ෂිම් එකක් එකතු කර ඇත්තෙමු . එය කමක් නැත, ඔබට href ගුණාංගයක් නොමැති නම් සහ සුන්දර පරිහානියක් නොමැති නම් ඔබේ සබැඳිය කෙසේ හෝ ක්‍රියා නොකරනු ඇත - තවද ඔබට කරදර වීමට විශාල ගැටළු ඇත.aa:hovera.hover

  • ඔබගේ ක්‍රියාව තවමත් ජාවාස්ක්‍රිප්ට් අක්‍රීය කර ඇති අයුරින් ක්‍රියා කිරීමට ඔබට අවශ්‍ය නම්, යම් URL aඑකකට යන hrefගුණාංගයක් සහිත මූලද්‍රව්‍යයක් භාවිතා කිරීම, එය අජැක්ස් ඉල්ලීමක් හරහා හෝ ක්‍රියාවට නැංවීම වෙනුවට අතින් සිදු කරනු ඇත. ඔබ මෙය කරන්නේ නම් event.preventDefault(), බොත්තම ක්ලික් කළ විට එය සබැඳිය අනුගමනය නොකරන බවට වග බලා ගැනීම සඳහා ඔබේ ක්ලික් ඇමතුමෙහි ඔබ එය සිදු කරන බව සහතික කිරීමට අවශ්‍යය. මෙම විකල්පය සුන්දර පරිහානිය ලෙස හැඳින්වේ.


163
ප්‍රවේශම් වන්න, href ගුණාංග අතහැර දැමීම හරස් බ්‍රව්සරයට අනුකූල නොවන අතර අන්තර්ජාල ගවේෂකයේ හෝවර් ප්‍රයෝග වැනි දේ ඔබට අහිමි වනු ඇත
තෝමස් ඩේවිස්

16
පරෙස්සම් වන්න: buttonමෙහි යෝජනා කර ඇති සම්බන්ධක-ශෛලීය ප්‍රවේශය IE9 සහ ඊට පහළින් ඇති නොවැළැක්විය හැකි “3d” ක්‍රියාකාරී තත්වයෙන් පීඩා විඳිති .
බ්‍රෙනන් රොබට්ස්

44
මෙම පිළිතුර ඕනෑවට වඩා ප්‍රබලය. ඔබට JS හැසිරීම 1 හෝ 2 කට අදාළ කිරීමට අවශ්‍ය අවස්ථා තිබේ. එවැනි අවස්ථාවකදී අතිරේක CSS නිර්වචනය කර සමස්ත JS ශ්‍රිතයක් එන්නත් කිරීම අතිරික්තය. සමහර අවස්ථා වලදී (උදා: CMS හරහා අන්තර්ගතය එකතු කිරීම) ඔබට නව CSS හෝ තනිවම JS එන්නත් කිරීමට අවසර නැත , සහ ඔබට කළ හැක්කේ ඉන්ලයින් පමණි. සරල JS a href 1 ක් හෝ 2 ක් සඳහා ප්‍රායෝගිකව පේළිගත විසඳුම නඩත්තු කළ හැක්කේ කෙසේදැයි මම නොදනිමි . මේ ඇතුළුව නරක පුරුදු පිළිබඳ පුළුල් පොදු ප්‍රකාශ ගැන සැමවිටම සැක කරන්න :)
ජෝර්දාන් රයිගර්

17
විසඳීමට අපහසු සියලු "සටහන්" සමඟ (ටැබින්ඩෙක්ස් එකක් සැකසීම සංකීර්ණ පිටුවක කරදරයක් ඉල්ලා සිටී!). කරන්න වඩා හොඳය javascript:void(0). එය ප්‍රායෝගික පිළිතුර වන අතර සැබෑ ලෝකයේ ඇති එකම බුද්ධිමත් පිළිතුර එයයි.
අභි බෙකර්ට්

14
ඔබේ වෙබ් යෙදුමට ප්‍රවේශ විය හැකි බවට ඔබ සැලකිලිමත් වන්නේ නම් (ඔබ එසේ කළ යුතුය), සරල බව සහ සනීපාරක්ෂාව href සඳහා තර්ක කරයි. පිස්සුව පවතින්නේ ටැබින්ඩෙක්ස් දිශාවට ය.
jkade

328

'#'පරිශීලකයා නැවත පිටුවේ ඉහළට ගෙන යනු ඇත, එබැවින් මම සාමාන්‍යයෙන් යන්නෙමි void(0).

javascript:; එසේම හැසිරේ javascript:void(0);


68
එය වළක්වා ගත හැකි ක්‍රමය වන්නේ ඔන්ක්ලික් සිදුවීම් හසුරුවන්නාගේ ව්‍යාජ තොරතුරු ය.
ග්වාන්ටේ

34
ජාවාස්ක්‍රිප්ට් ජේඑස් සාර්ථකව ක්‍රියාත්මක නොවන්නේ නම් සිදුවීම් හසුරුවන්නාගේ වැරදි නැවත ලබා දීමෙන් වැළකී සිටිය නොහැක.
ක්වෙන්ටින්

28
"#someNonExistantAnchorName" භාවිතා කිරීම හොඳින් ක්‍රියාත්මක වන්නේ එයට පනින්න තැනක් නැති නිසාය.
scunliffe

21
ඔබට මූලික href එකක් තිබේ නම්, #නැතහොත් වත්මන් පිටුව වෙනුවට මූලික href පිටුවෙහි #somethingඇති නැංගුරම වෙත ඔබව ගෙන යනු ඇත .
අභි බෙකර්ට්

11
ෂෙබාං ( #!) උපක්‍රමය කරන නමුත් එය අනිවාර්යයෙන්ම නරක පුරුද්දකි.
නීල්

277

මම අවංකවම යෝජනා කරන්නේ නැහැ. <button></button>එම හැසිරීම සඳහා මම ශෛලීගත ලෙස භාවිතා කරමි .

button.link {
  display: inline-block;
  position: relative;
  background-color: transparent;
  cursor: pointer;
  border: 0;
  padding: 0;
  color: #00f;
  text-decoration: underline;
  font: inherit;
}
<p>A button that looks like a <button type="button" class="link">link</button>.</p>

මේ ආකාරයෙන් ඔබට ඔබේ ඔන්ක්ලික් එක පැවරිය හැකිය. onclickමූලද්‍රව්‍ය ටැගයේ ඇති ගුණාංගය භාවිතා නොකොට ස්ක්‍රිප්ට් හරහා බැඳීමට මම යෝජනා කරමි . අක්‍රීය කළ නොහැකි පැරණි IE වල ඇති psuedo 3d පෙළ ආචරණය එකම ගොචා වේ.


ඔබ නම් යුතුය භාවිතයට ඒ අංගයක් භාවිතා කරන්න, javascript:void(0);දැනටමත් සඳහන් හේතු නිසා.

  • ඔබගේ ඔන්ක්ලික් සිදුවීම අසමත් වුවහොත් සැමවිටම බාධා ඇති වේ.
  • වැරදි පැටවුම් ඇමතුම් සිදු නොවනු ඇත, හෝ හැෂ් වෙනසක් මත පදනම්ව වෙනත් සිදුවීම් අවුලුවනු ඇත
  • හැෂ් ටැගය ක්ලික් කිරීම (ඔන්ක්ලික් විසි කිරීම්) හරහා වැටුණහොත් අනපේක්ෂිත ලෙස හැසිරීමට හේතු විය හැක, එය සුදුසු වැටීමක් හරහා හැසිරීමක් හැර එය වළක්වා ගන්න, ඔබට සංචාලන ඉතිහාසය වෙනස් කිරීමට අවශ්‍යය.

සටහන: ක්ලික් කිරීම ඇත්ත වශයෙන්ම කරන්නේ කුමක්ද යන්න පෙන්වන අතිරේක දර්ශකයක් ලෙස සේවය කළ හැකි 0නූලක් ඔබට ආදේශ කළ හැකිය javascript:void('Delete record 123').


IE8 / IE9 හි, බොත්තමෙහි 1px "3D" ඕෆ්සෙට් ඉවත් කිරීමට මට නොහැකි ය: සක්‍රීය තත්වය.
බ්‍රෙනන් රොබට්ස්

@ බ්‍රෙනන් රොබට්ස් ඔව්, අවාසනාවකට මෙන්, ඕනෑම බොත්තම් මෝස්තරයක් IE සමඟ වඩා ගැටලු සහගතය ... මට තවමත් දැනෙන්නේ එය වඩාත්ම සුදුසු ප්‍රවේශය විය හැකි අතර, මම විටින් විට මගේම නීති කඩ නොකරන බව නොවේ.
ට්රැකර් 1

එවිට භාවිතා නොකරන <button>නමුත් input type=buttonඒ වෙනුවට?
පැට්රික් ඇෆෙන්ට්‍රන්ජර්

4
ඉන්පසු <clickable>මූලද්රව්යයක් භාවිතා කරන්න . නැත්නම් <clickabletim>ඔබ කැමති නම්. අවාසනාවකට මෙන්, සම්මත නොවන ටැගයක් හෝ සරල ඩිව් එකක් භාවිතා කිරීමෙන් යතුරුපුවරු භාවිතා කරන්නන්ට මූලද්රව්යය යොමු කිරීම දුෂ්කර විය හැකිය.
joeytwiddle

28
මෙම පිළිතුර ඉහළට විය යුතුය. ඔබට මෙම උභතෝකෝටිකය තිබේ නම්, ඔබට ඇත්ත වශයෙන්ම අවශ්‍ය වන්නේ අ button. IE9 ඉතා ඉක්මණින් වෙළඳපල කොටස් අහිමි වෙමින් පවතී, වාසනාවකට මෙන්, 1px සක්‍රීය බලපෑම මඟින් අර්ථකථන සලකුණු භාවිතා කිරීම අපව වළක්වා නොගත යුතුය. <a>සබැඳියක්, එයින් අදහස් කරන්නේ ඔබව යම් තැනකට යැවීමයි <button>.
mjsarfatti

142

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

<a href="#" onclick="myJsFunc(); return false;">Link</a>

ඔබ Angular2 භාවිතා කරන්නේ නම්, මේ ආකාරයෙන් ක්‍රියා කරයි:

<a [routerLink]="" (click)="passTheSalt()">Click me</a>.

මෙතැනින් බලන්න https://stackoverflow.com/a/45465728/2803344


19
එබැවින් ජාවාස්ක්‍රිප්ට් සක්‍රිය කර ඇති පරිශීලක නියෝජිතයන් තුළ සහ ජාවාස්ක්‍රිප්ට් ශ්‍රිතයක් ක්‍රියාත්මක කිරීමට සහාය වන අතර, පිටුපසට ඉහළින් ඇති සබැඳියකට (කුමන හේතුවක් නිසා හෝ ජේඑස් අසමත් වන පරිශීලක නියෝජිතයින් සඳහා) පසුබසිනු ඇත? මෙය කලාතුරකින් සංවේදී පසුබෑමකි.
ක්වෙන්ටින්

21
"පරිශීලකයා ජාවාස්ක්‍රිප්ට් අක්‍රීය කර ඇති අවස්ථාවකදී අනුගමනය කිරීමට සැබෑ සබැඳියක් සහිතව", එය වෙබ් අඩවියට ජේඑස් වැඩ කිරීමට අවශ්‍ය බවට පැහැදිලි කිරීමක් වුවද # නොවේ ප්‍රයෝජනවත් පිටුවකට යා යුතුය. අසමත් වීම සඳහා, යෙදවීමට පෙර සංවර්ධකයා නිසි බ්‍රව්සර් විශේෂාංග හඳුනාගැනීම යනාදිය භාවිතා කරනු ඇතැයි මම අපේක්ෂා කරමි.
Zach

මම හිතන්නේ (බලාපොරොත්තුව) මේ වගේ දෙයක් උත්පතන හෝ ඒ හා සමාන සරල දෙයක් පෙන්වීම සඳහා පමණක් වේවි. එවැනි අවස්ථාවකදී, පෙරනිමිය උත්පතන පිටු url වේ. මෙය වෙබ් යෙදුමක කොටසක් නම්, හෝ JS අක්‍රීය කර තිබීම පිටුව මුළුමනින්ම බිඳ දමනු ඇත, එවිට මෙම කේතයට වෙනත් ගැටළු තිබේ ...
බ්‍රයන් මොස්කව්

5
මගේ වෙබ් යෙදුම් නිර්මාණය කර ඇත්තේ මනරම් ලෙස පිරිහීමටයි, එබැවින් සබැඳිය තවමත් ප්‍රයෝජනවත් පිටුවක් වනු ඇත. ඔබගේ වෙබ් යෙදුම චැට් සේවාදායකයකු හෝ අන්තර්ක්‍රියාකාරී දෙයක් නොවේ නම්, පිරිහීම මනසේ තබාගෙන සැලසුම් කිරීමට ඔබ කාලය යෙදවුවහොත් මෙය ක්‍රියාත්මක වේ.
Zach

2
ගැටළුව වන්නේ myJsFunc දෝෂයක් විසි කරන්නේ නම්, ආපසු පැමිණීම අසත්‍යය සඳහා එය ග්‍රහණය නොකෙරේ.
ට්රැකර් 1

106

ඔබ මගෙන් ඇසුවොත්;

ජාවාස්ක්‍රිප්ට් කේතයක් ධාවනය කිරීමේ එකම අරමුණ ඔබේ "සබැඳියට" තිබේ නම් එය සබැඳියක් ලෙස සුදුසුකම් නොලබයි; ජාවාස්ක්‍රිප්ට් ශ්‍රිතයක් සමඟ පෙළ කැබැල්ලක් එයට සම්බන්ධ කර ඇත. සබැඳියක් අනුකරණය කිරීම සඳහා <span>ටැග් එකක් onclick handlerඅමුණා ඇති අතර මූලික CSS කිහිපයක් භාවිතා කිරීමට මම නිර්දේශ කරමි . සබැඳි සැරිසැරීම සඳහා සාදා ඇති අතර, ඔබේ ජාවාස්ක්‍රිප්ට් කේතය සංචාලනය සඳහා නොවේ නම් එය <a>ටැගයක් නොවිය යුතුය .

උදාහරණයක්:

function callFunction() { console.log("function called"); }
.jsAction {
    cursor: pointer;
    color: #00f;
    text-decoration: underline;
}
<p>I want to call a JavaScript function <span class="jsAction" onclick="callFunction();">here</span>.</p>


126
මෙම ප්‍රවේශය මූසිකය පමණක් ක්‍රියාත්මක කිරීම සඳහා 'සබැඳිය' සීමා කරයි. යතුරුපුවරුව හරහා නැංගුරමක් නැරඹිය හැකි අතර ඇතුල් කිරීමේ යතුර එබූ විට එහි 'ඔන්ක්ලික්' සිදුවීම ඉවත් වේ.
ඇන්තනි ඩබ්ලිව් ජෝන්ස්

40
ඔබගේ CSS හි දෘඩ කේතීකරණ වර්ණ මඟින් පරිශීලකයා විසින් නිර්වචනය කළ හැකි අභිරුචි වර්ණ භාවිතා කිරීම බ්‍රව්සරය වළක්වනු ඇත, එය ප්‍රවේශවීමේ ගැටලුවක් විය හැකිය.
හොසම් අලි

30
<span>ගේ අදහස් නොකෙරේ කරන්න දෙයක් නැහැ. <A>nchors සහ ඒ <buttons>සඳහා භාවිතා වේ!
redShadow

22
භාවිතා නොකිරීම buttonsමෙහි භාවිතා කිරීම වඩා හොඳ තේරීමකි span.
apnerve

1
මම හිතන්නේ නැංගුරම් ටැගයකට වඩා පරතරයක් හොඳයි. එහි අනිවාර්ය href ගුණාංගයට ඔබව යොමු කිරීම සඳහා නැංගුරම් ටැගය පවතී. ඔබ href භාවිතා කිරීමට යන්නේ නැත්නම්, නැංගුරමක් භාවිතා නොකරන්න. එය සබැඳියක් නොවන නිසා පමණක් මූසිකයට සබැඳිය සීමා නොකරයි. එයට href එකක් නොමැත. එය බොත්තමක් වැනි නමුත් එය පළ නොකරයි. කිසිවක් කිරීමට අදහස් නොකිරීමේ කාලය සම්පූර්ණයෙන්ම අවලංගුය. ඔබ සැරිසරන විට සක්‍රිය වන පතන මෙනුවක් සලකා බලන්න. එය බොහෝ විට පරතරයන් හා බෙදීම්වල එකතුවක් වන අතර තිරය මත ප්‍රදේශයක් පුළුල් කරන බොත්තමක ​​ක්‍රියාකාරිත්වය සිදු කරයි.
නිබ්ලිපිග්

97

ඉතා මැනවින් ඔබ මෙය කරනු ඇත:

<a href="javascriptlessDestination.html" onclick="myJSFunc(); return false;">Link text</a>

නැතහොත්, ඊටත් වඩා හොඳ නම්, ඔබට HTML හි පෙරනිමි ක්‍රියා සබැඳිය ඇති අතර, DOM විදැහුම් කිරීමෙන් පසුව ඔබ ජාවාස්ක්‍රිප්ට් හරහා බාධාවකින් තොරව මූලද්‍රව්‍යයට ඔන්ක්ලික් සිද්ධිය එක් කරනු ඇත, එමඟින් ජාවාස්ක්‍රිප්ට් නොමැති නම් / ප්‍රයෝජනයට නොගන්නේ නම් වැඩකට නැති සිදුවීම් හසුරුවන්නන් ඔබේ කේතය ප්‍රහේලිකාවක් කර ඔබේ සත්‍ය අන්තර්ගතය අපැහැදිලි කිරීමට (හෝ අවම වශයෙන් අවධානය වෙනතකට යොමු කිරීමට) ඉඩ තිබේ.


76

හුදෙක් භාවිතා කිරීම #විහිලු සහගත චලනයන් සිදු කරයි, එබැවින් #selfඔබ යතුරු ලියනය කිරීමේ උත්සාහයන් ඉතිරි කර ගැනීමට කැමති නම් භාවිතා කිරීමට මම නිර්දේශ කරමි JavaScript bla, bla,.


7
වාව්, මෙම ඉඟිය සඳහා මාපට ඇඟිල්ල දිගු කරන්න. #selfනම් කරන ලද ටැග් සඳහා ඔබට භාවිතා කළ හැකි බව කිසි විටෙකත් දැන නොසිටි අතර, පිටුවේ ඉහළට පැනීමේ කරදරකාරී බ්‍රව්සර් හැසිරීමෙන් වළකින්න. ඔබට ස්තුතියි.
alonso.torres

34
යොමු කිරීම සඳහා, #selfවිශේෂ බවක් නොපෙනේ. ලේඛනයේ ඕනෑම මූලද්‍රව්‍යයක නමට හෝ හැඳුනුම්පතට නොගැලපෙන (සහ හිස් හෝ "ඉහළ" නොවේ) ඕනෑම කොටස් හඳුනාගැනීමක් එකම බලපෑමක් ඇති කළ යුතුය.
cHao

1
මම සාමාන්‍යයෙන් සාදන ලද නැංගුරම් නාමයක් පමණක් භාවිතා කරමි, නමුත් මම සිතන්නේ මෙය මගේ වැඩ කටයුතු කරගෙන යාමට අනුකූලව සිදු කිරීමට පටන් ගනිමි.
ඩග්ලස්.සෙසර්

11
#voidඅනෙක් අදහස් දැක්වීමේදී සම්මුතියක් ඇති කිරීමට මම යෝජනා කළ නමුත් ඇත්ත වශයෙන්ම #selfඑය කෙටි හා කටපාඩම් කිරීම පහසුය. ඕනෑම දෙයකට වඩා හොඳයි#
jakub.g

6
නමුත් ඔබ එම සබැඳිය ක්ලික් කළහොත් එය යූආර්එල් හි "# අවලංගු කිරීම" දැකීම අමුතු දෙයක් වනු ඇත.
pmiranda

68

මම පහත සඳහන් දෑ භාවිතා කරමි

<a href="javascript:;" onclick="myJsFunc();">Link</a>

වෙනුවට

<a href="javascript:void(0);" onclick="myJsFunc();">Link</a>

2
මම භාවිතා කරන්නේ javascript:(අර්ධ කොලන් නැත) එය හොවර්හි තත්ව තීරුවේ පිළිවෙලට පෙනෙන බැවිනි.
බෝවන්

4
මෙම කේතය පැරණි IE හි නරක විස්මයන් ඇති කළ හැකිය. යම් අවස්ථාවක දී එය පෙරළීම්
ඉල්යා ස්ට්‍රෙල්ට්සින්

ඔබට සැමවිටම කළ හැකිය ... javascript:void('Do foo')නොසලකා අවලංගු කිරීම නිර්වචනය නොකෙරේ, එය ක්ලික් කිරීමෙන් කුමක් කළ යුතුද යන්න පරිශීලකයාට දර්ශකයක් ලබා දෙනු ඇත. එහිදී Do fooවිය හැකි Delete record Xහෝ ඔබ කැමති ඕනෑම දෙයක්.
ට්රැකර් 1

53

ඔබ සාමාන්‍ය URL hrefආරෝපණයක භාවිතා කළ යුතු යැයි සඳහන් වෙනත් තැනක යෝජනා සමඟ මම එකඟ වෙමි , ඉන්පසු ඔන්ක්ලික් හි ජාවාස්ක්‍රිප්ට් ශ්‍රිතයක් අමතන්න. දෝෂය නම්, ඔවුන් return falseඇමතුමෙන් පසුව ස්වයංක්‍රීයව එකතු කිරීමයි.

මෙම ප්‍රවේශයේ ඇති ගැටළුව නම්, ක්‍රියාකාරීත්වය ක්‍රියා නොකරන්නේ නම් හෝ කිසියම් ගැටළුවක් ඇති වුවහොත්, සබැඳිය පැහැදිලි කළ නොහැකි වනු ඇත. ඔන්ක්ලික් සිදුවීම සැමවිටම නැවත පැමිණෙනු ඇත false, එබැවින් සාමාන්‍ය URL කැඳවනු නොලැබේ.

ඉතා සරල විසඳුමක් තිබේ. trueඑය නිවැරදිව ක්‍රියාත්මක වන්නේ නම් ශ්‍රිතය නැවත පැමිණීමට ඉඩ දෙන්න . ක්ලික් කිරීම අවලංගු කළ යුතුද නැද්ද යන්න තීරණය කිරීම සඳහා ආපසු ලබා දුන් අගය භාවිතා කරන්න:

ජාවාස්ක්‍රිප්ට්

function doSomething() {
    alert( 'you clicked on the link' );
    return true;
}

HTML

<a href="path/to/some/url" onclick="return !doSomething();">link text</a>

සටහන, මම doSomething()ශ්‍රිතයේ ප්‍රති result ලය ප්‍රතික්ෂේප කරන බව . එය ක්‍රියාත්මක වන්නේ නම්, එය නැවත පැමිණෙනු ඇත true, එබැවින් එය ප්‍රතික්ෂේප කරනු ලැබේ ( false) සහ path/to/some/URLකැමැත්ත කැඳවනු නොලැබේ. මෙම උත්සවයට ආපසු නම් false, (උදාහරණයක් ලෙස, බ්රව්සරය සහාය නැති උත්සවය හෝ වෙන කිසිම දෙයක් තුල භාවිතා යමක් වැරදි ගියහොත්), ඒ සඳහා බොහෝ දුරට නිශේධනය කරයි trueසහ path/to/some/URLහැඳින්වේ.


50

#වඩා හොඳයි javascript:anything, නමුත් පහත සඳහන් දේ ඊටත් වඩා හොඳයි:

HTML:

<a href="/gracefully/degrading/url/with/same/functionality.ext" class="some-selector">For great justice</a>

JavaScript:

$(function() {
    $(".some-selector").click(myJsFunc);
});

ඔබ සැමවිටම උත්සාහ කළ යුත්තේ සුන්දර පරිහානිය සඳහා ය (පරිශීලකයාට ජාවාස්ක්‍රිප්ට් සක්‍රීය කර නොමැති අවස්ථාවක ... සහ එය පිරිවිතර හා අයවැය සමඟ ඇති විට). එසේම, ජාවාස්ක්‍රිප්ට් ගුණාංග සහ ප්‍රොටෝකෝලය කෙලින්ම HTML හි භාවිතා කිරීම නරක ආකාරයක් ලෙස සැලකේ.


1
U මුහ්ඩ්: නැවත පැමිණීම clickසබැඳි මත ක්‍රියාත්මක විය යුතුය …
රයි-

50

<button>ඒ වෙනුවට මූලද්‍රව්‍යයක් භාවිතා කිරීම මම නිර්දේශ කරමි , විශේෂයෙන් පාලනය මඟින් දත්තවල වෙනසක් ඇති කරයි. (POST වැනි දෙයක්.)

ප්‍රගතිශීලී වර්ධනයක් වන මූලද්‍රව්‍යයන් බාධාවකින් තොරව එන්නත් කළහොත් එය වඩාත් හොඳය. ( මෙම අදහස බලන්න .)


2
මමත් හිතන්නේ මේක තමයි හොඳම විසඳුම කියලා. ඔබට ක්‍රියාවක් කිරීමට අදහස් කරන අංගයක් තිබේ නම්, එය සබැඳියක් වීමට හේතුවක් නැත.
mateuscb

ඔබ ඇසුවොත් සහ ඔබේ href එක වෙනත් ලැයිස්තුගත පිළිතුරු සමහරක් "# යමක්" ලෙස පෙනෙනු ඇත, නමුත්: බුද්ධිමත් කිසිවක් සමඟ සම්බන්ධ නොවී, href එකක් හෝ සබැඳියක් හෝ තිබීමෙන් පලක් නැත. යෝජිත බොත්තම භාවිතා කිරීම කළ හැකිය, නැතහොත් වෙනත් මූලද්‍රව්‍යයක් භාවිතා කළ හැකිය.
kontur

1
මෙහි ඇති තවත් වාසියක් නම් බූට්ස්ට්‍රැප් .btnබොත්තම් සහ සබැඳි හරියටම සමාන වීමයි.
සිරෝ සැන්ටිලි 郝海东 冠状 病 六四 事件 事件

පරිශීලක දෘෂ්ටි කෝණයෙන්, button# යූආර්එල් වෙත හඳුන්වා දීම හෝ aහාවාස් ජාවාස්ක්‍රිප්ට් ලෙස පෙන්වන්නේ නැත :;
කොල්

39

ඔබ ජාවාස්ක්‍රිප්ට් භාවිතයෙන් සබැඳිය ලියන්නේ නැත්නම් (එය බ්‍රව්සරයේ සක්‍රීය කර ඇති බව ඔබ දනී), ඔබ ජාවාස්ක්‍රිප්ට් අක්‍රීය කර ඇති බ්‍රවුස් කරන පුද්ගලයින් සඳහා නිසි සබැඳියක් ලබා දිය යුතු අතර පසුව ඔබේ ඔන්ක්ලික් හි සබැඳියේ පෙරනිමි ක්‍රියාව වළක්වා ගත යුතුය. සිදුවීම් හසුරුවන්නා. මේ ආකාරයෙන් ජාවාස්ක්‍රිප්ට් සක්‍රීය කර ඇති අය ශ්‍රිතය ක්‍රියාත්මක කරන අතර ජාවාස්ක්‍රිප්ට් ආබාධිත අය සබැඳිය ක්ලික් කර කිසිවක් සිදු නොවී සුදුසු පිටුවකට (හෝ එකම පිටුවක පිහිටීම) පනින්න.


36

නිසැකවම හැෂ් ( #) වඩා හොඳ වන්නේ ජාවාස්ක්‍රිප්ට්හි එය ව්‍යාජ ආකෘතියක් වන බැවිනි:

  1. ඉතිහාසය දූෂණය කරයි
  2. එන්ජිමේ නව පිටපතක් ස්ථාපනය කරයි
  3. ගෝලීය විෂය පථය තුළ ක්‍රියාත්මක වන අතර සිදුවීම් පද්ධතියට ගරු නොකරයි.

පෙරනිමි ක්‍රියාව වළක්වන ඔන්ක්ලික් හෑන්ඩ්ලර් සමඟ ඇත්ත වශයෙන්ම "#" වඩා හොඳය. එපමණක් නොව, ජාවාස්ක්‍රිප්ට් ධාවනය කිරීමේ එකම අරමුණ ඇති සබැඳියක් ඇත්ත වශයෙන්ම “සබැඳියක්” නොවේ. ඔබට සරලවම ස්ටයිල් ෂීට් සමඟ සම්බන්ධ වීමේ පෙනුම හා හැඟීම අනුකරණය කළ හැකි අතර href ගැන කිසිසේත් අමතක කළ හැකිය.

ඊට අමතරව, කව්ගොඩ්ගේ යෝජනාව සම්බන්ධයෙන්, විශේෂයෙන් මෙය: ...href="javascript_required.html" onclick="...මෙය හොඳ ප්‍රවේශයකි, නමුත් එය “ජාවාස්ක්‍රිප්ට් අක්‍රීය” සහ “ඔන්ක්ලික් අසමත්” අවස්ථා අතර වෙනස හඳුනා නොගනී.


1
Er බර්කර් යූසීර්, ඇයි සීඩබ්ලිව්?
නොමිලේ උපදේශනය

30

මම සාමාන්‍යයෙන් යන්නම්

<a href="javascript:;" onclick="yourFunction()">Link description</a>

එය ජාවාස්ක්‍රිප්ටයට වඩා කෙටි ය: අවලංගු (0) සහ එයම කරයි.


27

මම භාවිතා කරන්නේ:

<a href="#" onclick="myJsFunc();return false;">Link</a>

හේතු:

  1. මෙය hrefසරල, සෙවුම් යන්ත්‍රවලට අවශ්‍ය වේ. ඔබ වෙනත් දෙයක් භාවිතා කරන්නේ නම් (නූලක් වැනි), එය 404 not foundදෝෂයක් ඇති විය හැක .
  2. මූසිකය සබැඳිය පුරා සැරිසරන විට, එය ස්ක්‍රිප්ට් එකක් බව නොපෙන්වයි.
  3. භාවිතා කිරීමෙන් return false;, පිටුව ඉහළට පනින්න හෝ backබොත්තම කැඩෙන්නේ නැත.

මම "1" සමඟ එකඟ නොවෙමි. ස්ක්‍රිප්ට් වලට ඉඩ නොදෙන විට ඔබ ස්ක්‍රිප්ට් සබැඳිය දැමූ විට එය දෝෂයක් ඇති කරයි. ඒ නිසා js කේතය සමඟ එවැනි සම්බන්ධතා එකතු කළ යුතුය. ස්ක්‍රිප්ටයට ඉඩ නොදෙන අතර කිසිදු දෝෂයක් නොපෙනෙන අතර මිනිසුන්ට එම සබැඳි වළක්වා ගත හැකිය.
බර්කර් යූසීර්

25

මම භාවිතය තෝරාගත්තෙමි javascript:void(0), මන්ද මෙය භාවිතා කිරීමෙන් අන්තර්ගත මෙනුව විවෘත කිරීම සඳහා දකුණු ක්ලික් කිරීම වළක්වා ගත හැකිය. නමුත් javascript:;කෙටි වන අතර එකම දේ කරයි.


24

එබැවින්, ඔබ <a />ටැගයක් සමඟ ජාවාස්ක්‍රිප්ට් දේවල් කරන විට සහ ඔබ එය දැමුවහොත් href="#", ඔබට සිදුවීම අවසානයේ (පේළිගත සිදුවීම් බන්ධනයකදී) වැනි ව්‍යාජ එකතු කළ හැකිය :

<a href="#" onclick="myJsFunc(); return false;">Run JavaScript Code</a>

නැතහොත් ඔබට JavaScript සමඟ href ගුණාංගය වෙනස් කළ හැකිය :

<a href="javascript://" onclick="myJsFunc();">Run JavaScript Code</a>

හෝ

<a href="javascript:void(0)" onclick="myJsFunc();">Run JavaScript Code</a>

නමුත් අර්ථාන්විතව, මෙය සාක්ෂාත් කර ගැනීම සඳහා ඉහත සඳහන් සියලු ක්‍රම වැරදිය. (එය හොඳින් ක්‍රියාත්මක වුවද) . පිටුව සැරිසැරීම සඳහා කිසියම් මූලද්‍රව්‍යයක් නිර්මාණය කර නොමැති නම් සහ ඒ හා සම්බන්ධ සමහර ජාවාස්ක්‍රිප්ට් දේවල් තිබේ නම්, එය <a>ටැගයක් නොවිය යුතුය .

ඔබට <button />අවශ්‍ය පරිදි දේවල් කිරීමට හෝ b, span හෝ ඔබේ අවශ්‍යතාවයට සරිලන වෙනත් ඕනෑම අංගයක් භාවිතා කළ හැකිය , මන්ද ඔබට සියලු අංග මත සිදුවීම් එක් කිරීමට අවසර ඇත.


එබැවින්, භාවිතා කිරීමට එක් වාසියක් ඇත <a href="#">. ඔබ කර්සරය දර්ශකය පෙරනිමියෙන් එම මූලද්‍රව්‍යය මත ලබා ගනී a href="#". ඒ සඳහා, ඔබට cursor:pointer;මෙම ගැටළුව විසඳන මේ සඳහා CSS භාවිතා කළ හැකි යැයි මම සිතමි .

අවසානයේදී, ඔබ ජාවාස්ක්‍රිප්ට් කේතයෙන්ම සිදුවීම බැඳ තබන්නේ event.preventDefault()නම්, ඔබ <a>ටැගය භාවිතා කරන්නේ නම් මෙය සාක්ෂාත් කර ගැනීම සඳහා ඔබට කළ හැකිය , නමුත් ඔබ මේ සඳහා <a>ටැගයක් භාවිතා නොකරන්නේ නම් , එහිදී ඔබට වාසියක් ලැබෙනු ඇත. මෙය කිරීමට අවශ්‍ය නැත.

ඉතින්, ඔබ දුටුවහොත්, මේ ආකාරයේ දේවල් සඳහා ටැගයක් භාවිතා නොකිරීම වඩා හොඳය.


23

ජාවාස්ක්‍රිප්ට් ධාවනය කිරීමේ එකම අරමුණ සඳහා සබැඳි භාවිතා නොකරන්න.

H href = "#" භාවිතය පිටුව ඉහළට අනුචලනය කරයි; අවලංගු (0) භාවිතය බ්‍රව්සරය තුළ නාවික ගැටලු ඇති කරයි.

ඒ වෙනුවට, සබැඳියක් හැර වෙනත් අංගයක් භාවිතා කරන්න:

<span onclick="myJsFunc()" class="funcActuator">myJsFunc</span>

CSS සමඟ එය මෝස්තර කරන්න:

.funcActuator { 
  cursor: default;
}

.funcActuator:hover { 
  color: #900;
}

13
බොත්තමක් භාවිතා කරන්න, පරතරයක් නොවේ. බොත්තම් ස්වාභාවිකවම නාභිගත අනුපිළිවෙලට වැටෙන බැවින් මූසිකය / ට්‍රැක්පැඩ් /
ක්වෙන්ටින්

4
ක්වෙන්ටින්ගේ අදහස එකතු කිරීම: දැනට ලියා ඇති පරිදි, යතුරුපුවරු භාවිතා කරන්නන් spanමූලද්‍රව්‍යයට ළඟා නොවන්නේ එය අවධානය යොමු කළ නොහැකි අංගයක් වන බැවිනි. ඔබට බොත්තමක් අවශ්‍ය වන්නේ එබැවිනි.
සුන්ඩෝකු

1
පරතරයට එකතු කිරීමෙන් ඔබට එය අවධානය යොමු කළ හැකිය tabindex="0". බොත්තම භාවිතා කිරීම වඩා හොඳ වන්නේ එය ඔබට අපේක්ෂිත ක්‍රියාකාරිත්වය නොමිලේ ලබා දෙන බැවිනි. පරතරයක් භාවිතයෙන් එය ප්‍රවේශ කරවීම සඳහා ඔබට ක්ලික් හෑන්ඩ්ලර් ඇමිණීම පමණක් නොව, යතුරුපුවරු සිදුවීම් හසුරුවන්නෙකු අභ්‍යවකාශ තීරුවේ එබීම් හෝ යතුර ඇතුල් කර සාමාන්‍ය ක්ලික් හසුරුවන්නාට වෙඩි තබයි. දෙවන CSS තේරීම වෙනස් කිරීමටද ඔබට අවශ්‍ය වනු ඇත, .funcActuator:hover, .funcActuator:focusඑවිට මූලද්‍රව්‍යයේ අවධානය යොමු වී ඇති බව පෙනේ.
වැඩකට නැති කේතය

22

JQuery භාවිතා කිරීම වඩා හොඳය,

$(document).ready(function() {
    $("a").css("cursor", "pointer");
});

හා පළමුෙවන් දෙකම href="#"හා href="javascript:void(0)".

නැංගුරම් ටැග් සලකුණු කිරීම සමාන වනු ඇත

<a onclick="hello()">Hello</a>

සරලයි!


5
මේක තමයි මම කියන්න ගියේ. සබැඳියකට ආපසු හැරවීමේ url එකක් තේරුමක් තිබේ නම්, එය භාවිතා කරන්න. එසේ නොමැතිනම්, href ඉවත් කරන්න හෝ <a> ට වඩා අර්ථාන්විතව සුදුසු යමක් භාවිතා කරන්න. Href ද ඇතුළුව සෑම කෙනෙකුම යෝජනා කරන එකම හේතුව වන්නේ ඇඟිල්ල ඉහළට ඔසවා තැබීමයි, සරල “a {cursor: pointer;}” උපක්‍රමය කරයි.
මැට් කැන්ටෝර්

12
එය දරුණු ප්‍රවේශයක් ලබා දෙයි. SO හි එය උත්සාහ කරන්න: මූසිකය භාවිතා නොකර ඔබට පෝස්ට් එකක් සලකුණු කළ නොහැක. "සබැඳිය" සහ "සංස්කරණය" සබැඳි ටැබ් කිරීමෙන් ප්‍රවේශ විය හැකි නමුත් "ධජය" එසේ නොවේ.
නිකොලස්

6
මම මෙම විකල්පය සමඟ එකඟ වෙමි. නැංගුරමට ජාවාස්ක්‍රිප්ට් හැර වෙනත් අරමුණක් නොමැති නම්, එයට href නොතිබිය යුතුය. Ati ෆතිහ්: jQuery භාවිතා කිරීම යනු ජාවාස්ක්‍රිප්ට් අක්‍රීය කර ඇත්නම්, සබැඳියට දර්ශකයක් නොමැති බවයි.
ස්කොට් රිපී

3
ඔබ මෙම මාර්ගයට යාමට යන්නේ නම්, jQuery භාවිතා කර ක්ලික් කිරීම බැඳ නොගන්නේ මන්ද? JQuery භාවිතා කිරීමෙහි ඇති විශිෂ්ටතම දෙය නම් ඔබේ සලකුණු වලින් ඔබේ ජාවාස්ක්‍රිප්ට් වෙන් කිරීමේ හැකියාවයි.
මුහ්ඩ්

4
මට විශ්වාස කරන්න බැහැ මේ පිළිතුරට ඡන්ද 11 ක් තියෙනවා කියලා. ඒක භයානකයි. ඔබ ජාවාස්ක්‍රිප්ට් (සහ jQuery ??) හරහා ශෛලියක් එකතු කරන්නේ ඇයි, පසුව HTML හි ඔබගේ ඔන්ලික් ක්‍රියාව නිර්වචනය කරන්නේ ඇයි? භයානකයි.
එම්එම්එම්

20

ඔබ AngularJS භාවිතා කරන්නේ නම් , ඔබට පහත සඳහන් දෑ භාවිතා කළ හැකිය:

<a href="">Do some fancy JavaScript</a>

කිසිවක් නොකරනු ඇත.

අතිරෙකව

  • (#) මෙන් එය ඔබව පිටුවේ ඉහළට ගෙන යන්නේ නැත
    • එමනිසා, ඔබට පැහැදිලිවම falseජාවාස්ක්‍රිප්ට් සමඟ ආපසු යාමට අවශ්‍ය නැත
  • එය කෙටි සංක්ෂිප්තයකි

6
නමුත් මෙය පිටුව නැවත පූරණය වීමට හේතු වන අතර, අපි සෑම විටම පිටුව වෙනස් කිරීමට javascript භාවිතා කරන බැවින් මෙය පිළිගත නොහැකිය.
හෙන්රි හූ

En හෙන්රිහු එය නැවත පූරණය නොකිරීමට හේතුව AngularJS බව මම තේරුම් ගතිමි. මගේ යාවත්කාලීන කළ පිළිතුර බලන්න.
සුළි සුළඟ

19

නොමැති නම් hrefසමහර විට නැංගුරමක් ටැගය භාවිතා කිරීමට හේතුවක් නැත.

සෑම අංගයකම පාහේ ඔබට සිදුවීම් (ක්ලික් කරන්න, සැරිසැරීම ආදිය) ඇමිණිය හැකිය, එබැවින් හුදෙක් a spanහෝ a භාවිතා නොකරන්නේ ඇයි div?

ජාවාස්ක්‍රිප්ට් අක්‍රීය පරිශීලකයින් සඳහා: පසුබෑමක් නොමැති නම් (නිදසුනක් ලෙස, විකල්පයක් href), අවම වශයෙන් එම මූලද්‍රව්‍යය <a>හෝ <span>ටැගය කුමක් වුවත් දැකීමට හා ඒවාට මැදිහත් වීමට ඔවුන්ට නොහැකි විය යුතුය .


19

සාමාන්‍යයෙන්, ජාවාස්ක්‍රිප්ට් අක්‍රීය කර ඇති සේවාදායකයින්ට තවමත් යම් ක්‍රියාකාරීත්වයක් ඇති බව තහවුරු කර ගැනීම සඳහා ඔබට සැමවිටම පසුබැසීමේ සබැඳියක් තිබිය යුතුය. මෙම සංකල්පය unobtrusive JavaScript ලෙස හැඳින්වේ.

උදාහරණය ... ඔබට පහත සෙවුම් සබැඳිය ඇති බව කියමු:

<a href="search.php" id="searchLink">Search</a>

ඔබට සැමවිටම පහත සඳහන් දෑ කළ හැකිය:

var link = document.getElementById('searchLink');

link.onclick = function() {
    try {
        // Do Stuff Here        
    } finally {
        return false;
    }
};

ඒ ආකාරයෙන්, ජාවාස්ක්‍රිප්ට් ආබාධිත පුද්ගලයින් වෙත යොමු කරනු ලබන search.phpඅතර ජාවාස්ක්‍රිප්ට් සමඟ ඔබේ නරඹන්නන් ඔබේ වැඩිදියුණු කළ ක්‍රියාකාරිත්වය දෙස බලයි.


17

මම පෞද්ගලිකව ඒවා ඒකාබද්ධව භාවිතා කරමි. උදාහරණයක් වශයෙන්:

HTML

<a href="#">Link</a>

jQuery ටිකක් සමඟ

$('a[href="#"]').attr('href','javascript:void(0);');

හෝ

$('a[href="#"]').click(function(e) {
   e.preventDefault();
});

නමුත් මම එය භාවිතා කරන්නේ පරිශීලකයා හිස් නැංගුරමක් මත ක්ලික් කළ විට පිටුව ඉහළට පැනීම වැළැක්වීම සඳහා ය. මම onHTML හි කෙලින්ම onClick සහ වෙනත් සිදුවීම් භාවිතා කරන්නේ කලාතුරකිනි .

මගේ යෝජනාව වනුයේ නැංගුරම වෙනුවට ගුණාංගය <span>සමඟ මූලද්‍රව්‍යය භාවිතා classකිරීමයි. උදාහරණයක් වශයෙන්:

<span class="link">Link</span>

ඉන්පසු .linkශරීරය තුළ ඔතා ඇති ස්ක්‍රිප්ට් එකකින් සහ ටැගයට පෙර </body>හෝ බාහිර ජාවාස්ක්‍රිප්ට් ලේඛනයකින් ශ්‍රිතය පවරන්න .

<script>
    (function($) {
        $('.link').click(function() {
            // do something
        });
    })(jQuery);
</script>

* සටහන: ගතිකව සාදන ලද මූලද්‍රව්‍ය සඳහා, භාවිතා කරන්න:

$('.link').on('click', function() {
    // do something
});

ගතිකව සාදන ලද මූලද්‍රව්‍ය සමඟ සාදන ලද ගතිකව සාදන ලද මූලද්‍රව්‍ය සඳහා, භාවිතා කරන්න:

$(document).on('click','.link', function() {
    // do something
});

එවිට ඔබට කුඩා CSS සහිත නැංගුරමක් මෙන් පෙනෙන පරිදි span මූලද්‍රව්‍යය මෝස්තර කළ හැකිය:

.link {
    color: #0000ee;
    text-decoration: underline;
    cursor: pointer;
}
.link:active {
    color: red;
}

ඉහත සඳහන් කළ jsFiddle උදාහරණයක් මෙන්න .


16

ඔබට ඉටු කර ගැනීමට අවශ්‍ය දේ මත පදනම්ව, ඔබට ඔන්ක්ලික් අමතක කර href භාවිතා කළ හැකිය:

<a href="javascript:myJsFunc()">Link Text</a>

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

<a href="javascriptlessDestination.html" onclick="myJSFunc(); return false;">Link text</a>

අවසාන වශයෙන්, ඔබට javascript:void(0)කිසිවෙකු කොහේවත් යාමට අකමැති නම් සහ ඔබට ජාවාස්ක්‍රිප්ට් ශ්‍රිතයක් ඇමතීමට අවශ්‍ය නැතිනම් ඔබට භාවිතා කළ හැකිය . ඔබට මවුස් ඕවර් සිදුවීමක් සිදුවීමට අවශ්‍ය රූපයක් තිබේ නම් එය විශිෂ්ට ලෙස ක්‍රියා කරයි, නමුත් පරිශීලකයාට ක්ලික් කිරීමට කිසිවක් නොමැත.


3
මෙහි ඇති එකම අවාසිය නම් (මතකයේ සිට, මම වැරදියි) IE ඔබ තුළ A එකක් නොමැති නම් A ලෙස A ලෙස නොසැලකේ. (එබැවින් CSS නීති ක්‍රියාත්මක නොවේ)
බෙන්ජෝල්

16

මට ව්‍යාජ සම්බන්ධතා කිහිපයක් ඇති විට, මම ඔවුන්ට 'සම්බන්ධයක් නැති' පන්තියක් ලබා දීමට කැමැත්තෙමි.

JQuery හි, මම පහත කේතය එක් කරමි:

$(function(){
   $('.no-link').click(function(e){
       e.preventDefault();
   });
});

HTML සඳහා, සබැඳිය සරලවම වේ

<a href="/" class="no-link">Faux-Link</a>

හැෂ්-ටැග් නැංගුරම් සඳහා භාවිතා කරන්නේ නම් මිස මම ඒවා භාවිතා කිරීමට කැමති නැත, මම ඉහත සඳහන් කරන්නේ ව්‍යාජ සබැඳි දෙකකට වඩා ඇති විට පමණි, එසේ නොමැතිනම් මම ජාවාස්ක්‍රිප්ට් සමඟ යන්නෙමි: අවලංගු (0).

<a href="javascript:void(0)" class="no-link">Faux-Link</a>

සාමාන්‍යයෙන්, මම කැමතියි සබැඳියක් භාවිතා කිරීමෙන් වැළකී යමක් පරතරයකින් ඔතා පොප්-අප් හෝ අන්තර්ගත-හෙළිදරව්වක් වැනි සමහර ජාවාස්ක්‍රිප්ට් කේත සක්‍රිය කිරීමේ ක්‍රමයක් ලෙස.


16

මම විශ්වාස කරන්නේ ඔබ ව්‍යාජ ද්විභාෂාවක් ඉදිරිපත් කරන බවයි. මේවා එකම විකල්ප දෙක නොවේ.

ඔබ නැංගුරම් ටැගය භාවිතා කළත් ඔබට මෙහි ඇත්ත වශයෙන්ම නැංගුරමක් නොමැති බව යෝජනා කළ D4V360 මහතා සමඟ මම එකඟ වෙමි. ඔබ සතුව ඇත්තේ ලේඛනයේ විශේෂ අංශයක් වන අතර එය තරමක් වෙනස් ලෙස හැසිරිය යුතුය. ඒ <span>ටැගය වඩා සුදුසු වේ.


ඔබ aa සමඟ ආදේශ spanකළහොත්, යතුරුපුවරුව හරහා එය අවධානය යොමු කළ හැකි බව මතක තබා ගත යුතුය.
ඇන්ඩ් ෆිෂර්

16

සංවර්ධක මෙවලම් සමඟ මම ගූගල් ක්‍රෝම් දෙකෙහිම උත්සාහ කළ අතර id="#"තත්පර 0.32 ක් ගතවිය. මෙම javascript:void(0)ක්‍රමයට ගත වූයේ තත්පර 0.18 ක් පමණි. එබැවින් ගූගල් ක්‍රෝම් හි javascript:void(0)වඩා හොඳින් හා වේගයෙන් ක්‍රියා කරයි.


ඇත්තටම ඔවුන් එහෙම කරන්නේ නැහැ. # ඔබව පිටුවේ ඉහළට පනිනවා.
ජොචෙන් ෂුල්ට්ස්

13

මම මූලික වශයෙන් ප්‍රගතිශීලී වැඩි දියුණු කිරීම් භාවිතා කරමින් මෙම ප්‍රායෝගික ලිපියෙන් අර්ථ නිරූපණය කරමි . කෙටි පිළිතුර නම්, ඔබ කිසි විටෙකත් භාවිතා නොකරන බව javascript:void(0);හෝ #ඔබේ පරිශීලක අතුරුමුහුණත ජාවාස්ක්‍රිප්ට් සක්‍රීය කර ඇති බව දැනටමත් අනුමාන කර ඇත්නම් මිස, ඔබ භාවිතා කළ යුතුjavascript:void(0); බවයි. එසේම, පරතරය සබැඳි ලෙස භාවිතා නොකරන්න, එය ආරම්භ කිරීම අර්ථාන්විතව අසත්‍ය බැවින්.

/ Home / Action / Parameters වැනි ඔබේ යෙදුමේ SEO හිතකාමී URL මාර්ග භාවිතා කිරීම හොඳ පුරුද්දකි. ඔබට පළමුව ජාවාස්ක්‍රිප්ට් නොමැතිව වැඩ කරන පිටුවකට සබැඳියක් තිබේ නම්, ඔබට පසුව අත්දැකීම් වැඩි දියුණු කළ හැකිය. වැඩ කරන පිටුවකට සත්‍ය සබැඳියක් භාවිතා කරන්න, ඉන්පසු ඉදිරිපත් කිරීම වැඩි දියුණු කිරීම සඳහා ඔන්ලික් සිදුවීමක් එක් කරන්න.

මෙන්න නියැදියකි. Home / ChangePictures යනු පරිශීලක අතුරුමුහුණත සහ සම්මත HTML ඉදිරිපත් කිරීමේ බොත්තම් සහිත පිටුවක ඇති පෝරමයකට වැඩ කරන සබැඳියකි, නමුත් එය jQueryUI බොත්තම් සහිත මොඩල් සංවාදයකට එන්නත් කර ඇති බව පෙනේ. ජංගම පළමු සංවර්ධනය තෘප්තිමත් කරන බ්‍රව්සරය මත පදනම්ව, කෙසේ හෝ ක්‍රියා කරයි.

<p><a href="Home/ChangePicture" onclick="return ChangePicture_onClick();" title="Change Picture">Change Picture</a></p>

<script type="text/javascript">
    function ChangePicture_onClick() {
        $.get('Home/ChangePicture',
              function (htmlResult) {
                  $("#ModalViewDiv").remove(); //Prevent duplicate dialogs
                  $("#modalContainer").append(htmlResult);
                  $("#ModalViewDiv").dialog({
                      width: 400,
                      modal: true,
                      buttons: {
                          "Upload": function () {
                              if(!ValidateUpload()) return false;
                              $("#ModalViewDiv").find("form").submit();
                          },
                          Cancel: function () { $(this).dialog("close"); }
                      },
                      close: function () { }
                  });
              }
        );
        return false;
    }
</script>

SEO අනුව මම මේ ආකාරයට කැමතියි. බොහෝ මිත්‍රශීලී URL භාවිතා කිරීම නිසැකවම පිටු අගය සාධකය වැඩි දියුණු කරයි.
චෙතබාහන
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.