Якое значэнне "href" варта выкарыстоўваць для спасылак на JavaScript, "#" ці "javascript: void (0)"?

Ніжэй прыведзены два метаду пабудовы спасылкі, якая мае адзіную мэту запуску JavaScript-кода. Што лепш, з пункту гледжання функцыянальнасці, хуткасці загрузкі старонкі, мэт праверкі і г.д.?

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

або

  <a href="javascript:void(0)" onclick="myJsFunc();">Run JavaScript Code</a> 
3784
25 сент. зададзены 2cBGj7vsfp 25 сент. 2008-09-25 20:54 '08 а 20:54 2008-09-25 20:54
@ 54 адказаў
  • 1
  • 2

Я выкарыстоўваю javascript:void(0) .

Тры прычыны. Заахвочванне выкарыстання # сярод каманды распрацоўшчыкаў непазбежна прыводзіць да некаторага выкарыстання вяртаецца значэння функцыі, званай так:

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

Але затым яны забываюць выкарыстоўваць return doSomething() у onclick і проста выкарыстоўваць doSomething() .

Другая прычына пазбягаць # заключаецца ў тым, што канчатковы return false; не будзе выконвацца, калі выкліканая функцыя выдае памылку. Такім чынам, распрацоўшчыкі павінны таксама памятаць, што належным чынам апрацоўваць любую памылку ў выкліканай функцыі.

Трэцяя прычына заключаецца ў тым, што бываюць выпадкі, калі ўласцівасць падзеі onclick прызначаецца дынамічна. Я аддаю перавагу мець магчымасць выклікаць функцыю або прызначаць яе дынамічна без неабходнасці кадавання функцыі спецыяльна для аднаго метаду ўкладання або іншага. Такім чынам, My onclick (ці на чым-небудзь) у разметцы HTML выглядае наступным чынам:

 onclick="someFunc.call(this)" 

АБО

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

Выкарыстанне javascript:void(0) дазваляе пазбегнуць ўсіх вышэйзгаданых галаўных боляў, і я не знайшоў прыкладаў недахопаў.

Такім чынам, калі вы самотны распрацоўшчык, вы можаце зрабіць свой уласны выбар, але калі вы працуеце ў камандзе, вам трэба альбо пазначыць:

Выкарыстоўвайце href="#" , пераканайцеся, што onclick заўсёды ўтрымлівае return false; у канцы, што любая выкліканая функцыя не выдае памылку і калі вы дынамічна далучаеце функцыю да ўласцівасці onclick , пераканайцеся, што гэтак жа, як і не выдаючы памылку, ён вяртае false .

АБО

border=0

Выкарыстоўвайце href="javascript:void(0)"

Па-другое, значна прасцей мець зносіны.

2057
26 сент. адказ дадзены AnthonyWJones 26 сент. 2008-09-26 11:03 '08 у 11:03 2008-09-26 11:03

Ні.

Калі вы можаце мець фактычны URL-адрас, які мае сэнс выкарыстоўваць гэта як HREF. Onclick не будзе спрацоўваць, калі хтосьці націскае на вашу спасылку, каб адкрыць новую ўкладку, або калі ў іх адключаны JavaScript.

Калі гэта немагчыма, вы павінны, па меншай меры, ўставіць якарнай тэг у дакумент з дапамогай JavaScript і адпаведных апрацоўшчыкаў падзей клікаў.

border=0

Я разумею, што гэта не заўсёды магчыма, але, на мой погляд, яму варта імкнуцца да распрацоўкі любога агульнадаступнага вэб-сайта.

Адмоўцеся ад ненадакучлівы JavaScript і прагрэсіўнае паляпшэнне (абодва Вікіпэдыя).

1230
25 сент. адказ дадзены Aaron Wagner 25 сент. 2008-09-25 21:09 '08 а 21:09 2008-09-25 21:09

Выкананне <a href="#" onclick="myJsFunc();">Link</a> або <a href="javascript:void(0)" onclick="myJsFunc();">Link</a> або што-небудзь яшчэ, якое змяшчае атрыбут onclick , было ў парадку назад пяць гадоў таму, хоць цяпер гэта можа быць дрэнны практыкай. Вось чаму:

  • Гэта спрыяе практыцы дакучлівага JavaScript - што апынулася цяжка падтрымліваць і складана маштабаваць. Падрабязней пра гэта ў Ненадакучлівы JavaScript .

  • Вы марнуеце свой час на стварэнне неверагодна складанага падрабязнага кода, які вельмі мала (калі такі маецца) прыносіць карысць вашай кодавай базе.

  • Зараз ёсць лепшыя, больш простыя і зручныя і маштабуюцца спосабы дасягнення жаданага выніку.

Ненадакучлівы JavaScript-спосаб

Проста не мае атрыбуту href наогул! Любы добры CSS reset будзе сачыць за адсутным стылем курсора па змаўчанні, так што гэта не праблема. Затым дадайце свае функцыі JavaScript, выкарыстоўваючы хупавыя і ненадакучлівыя перадавыя метады, якія больш зручныя ў абслугоўванні, паколькі ваша логіка JavaScript застаецца ў JavaScript, а не ў вашай разметцы, што неабходна пры распрацоўцы шырокамаштабных прыкладанняў JavaScript, якія патрабуюць, каб ваша логіка была падзелена на чорныя кампаненты і шаблоны. Падрабязней пра гэта ў Буйнамаштабная архітэктура прыкладанняў JavaScript

Прыклад простага кода

 a { cursor: pointer; color: blue; } a:hover,a.hover { text-decoration: underline; } 
Прыклад Backbone.js 

Для прыкладу маштабуецца, чорнага скрыні, кампанента Backbone.js - гл. Тут працоўны прыклад jsfiddle . Звярніце ўвагу на тое, як мы выкарыстоўваем ненадакучлівыя метады працы з JavaScript, а ў невялікай колькасці кода ёсць кампанент, які можа паўтарацца на старонцы некалькі разоў без пабочных эфектаў або канфліктаў паміж рознымі асобнікамі кампанентаў. Ўзрушаюча!

нататкі

  • Апусканне атрыбуту href ў элеменце a прывядзе да таго, што элемент не будзе даступны з дапамогай навігацыі па клавішы tab . Калі вы хочаце, каб гэтыя элементы былі даступныя з дапамогай клавішы tab , вы можаце ўсталяваць атрыбут tabindex ці замест яго выкарыстоўваць button . Вы можаце лёгка стылізаваць элементы кнопкі, каб яны выглядалі як звычайныя спасылкі, як паказана ў адказ Tracker1 .

  • Апусканне атрыбуту href ў элеменце a прывядзе да Internet Explorer 6 і Internet Explorer 7 , каб не прымаць стыль a:hover , таму мы дадалі просты JavaScript-пракладку, каб выканаць гэта з дапамогай a.hover . Што цалкам нармальна, як быццам у вас няма атрыбуту href і няма пісьменнага дэградацыі, тады ваша спасылка не будзе працаваць у любым выпадку - і ў вас з'явяцца больш сур'ёзныя праблемы.

  • Калі вы хочаце, каб ваша дзеянне па-ранейшаму працавала з адключаным JavaScript, выкарыстоўвайце элемент a з атрыбутам href , які адпраўляецца на некаторы URL-адрас, які будзе выконваць дзеянне ўручную, а не праз запыт Ajax ці нешта яшчэ павінен быць шлях. Калі вы робіце гэта, то вы хочаце, каб вы рабілі event.preventDefault() пры выкліку вашага кліку, каб пераканацца, што пры націску кнопкі ён не варта па спасылцы. Гэтая опцыя называецца грацыёзным пагаршэннем.

750
25 февр. адказ дадзены balupton 25 февр. 2012-02-25 05:08 '12 у 05:08 2012-02-25 05:08

'#' Верне карыстальніка ў пачатак старонкі, таму я звычайна іду з void(0) .

javascript:; таксама паводзіць сябе як javascript:void(0);

286
25 сент. адказ дадзены Adam Tuttle 25 сент. 2008-09-25 20:55 '08 а 20:55 2008-09-25 20:55

Я б шчыра не прапаноўваў ні таго, ні іншага. Я б выкарыстаў стылізаваны <button> </button> для гэтага паводзін.

Такім чынам вы можаце прызначыць свой onclick. Я таксама прапаную прывязаць скрыпт, не выкарыстоўваючы атрыбут onclick ў тэгу элемента. Адзіны атрыманы тэкст - гэта тэкставы эфект psuedo ў старых IE, які нельга адключыць.


Калі вы MUST карыстаецеся элемент A, выкарыстоўвайце javascript: void (0); па ўжо згаданым прычынах.

  • Заўсёды будзе перахапляцца ў выпадку збою падзеі onclick.
  • Не будзе адбывацца памылковая загрузка выклікаў або запуск іншых падзей на аснове змены хэша
  • Хэш-тэг можа выклікаць неспадзяванае паводзіны, калі пстрычка падае (onclick throws), пазбягаючы яго, калі гэта не з'яўляецца прыдатным паводзінамі, і вы хочаце змяніць гісторыю навігацыі.

ЗАЎВАГА. Вы можаце замяніць 0 на радок, такую як javascript: void ('Удалить запись 123') , якая можа служыць дадатковым індыкатарам, які пакажа, што на самой справе пстрычка.

233
15 дек. адказ дадзены Tracker1 15 снеж. 2011-12-15 21:41 '11 а 21:41 2011-12-15 21:41

Першы, у ідэале, з рэальнай спасылкай, калі карыстальнік адключыў JavaScript. Проста вярніце false, каб прадухіліць падзея пстрычкі пры запуску JavaScript.

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

Калі вы выкарыстоўваеце Angular2, гэты спосаб працуе:

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

Гл. Тут lifetop.site.site/questions/23049 / ...

131
25 сент. адказ дадзены Zach 25 сент. 2008-09-25 20:56 '08 у 20:56 2008-09-25 20:56

У ідэале вы б гэта зрабілі:

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

Або, што яшчэ лепш, у вас ёсць спасылка на дзеянне па змаўчанні ў HTML, і вы дадаеце падзея onclick да элемента ненадакучліва праз JavaScript пасля DOM-рэндэрынгу, тым самым гарантуючы, што калі JavaScript не прысутнічае / не выкарыстоўваецца, вы не маюць бескарысных апрацоўшчыкаў падзей, пранізлівых ваш код і патэнцыйна заблытвае (ці, па меншай меры, адцягваюць) ад вашага фактычнага кантэнту.

92
25 сент. адказ дадзены Steve Paulo 25 сент. 2008-09-25 21:35 '08 а 21:35 2008-09-25 21:35

Не пытайцеся мяне,

Калі ваша "спасылка" мае адзіную мэту для запуску некаторага кода JavaScript, яна не кваліфікуецца як спасылка; хутчэй частка тэксту з функцыяй JavaScript, звязанай з ёй. Я б рэкамендаваў выкарыстоўваць тэг <span> з прымацаваным да яго тэгам onclick handler і некаторых базавых CSS для імітацыі спасылкі. Спасылкі зробленыя для навігацыі, і калі ваш код JavaScript ня прызначаны для навігацыі, ён не павінен быць тэгам <a> .

прыклад:

 .jsAction { cursor: pointer; color: #00f; text-decoration: underline; } 
92
25 сент. адказ дадзены fijter 25 сент. 2008-09-25 21:59 '08 а 21:59 2008-09-25 21:59

Выкарыстоўваючы толькі # робіць некалькі смешных рухаў, таму я б рэкамендаваў выкарыстоўваць #self , калі вы хочаце захаваць пры ўводзе намаганняў JavaScript bla, bla, .

74
24 сент. адказ дадзены Spammer Joe 24 сент. 2011-09-24 04:55 '11 у 04:55 2011-09-24 04:55

Я выкарыстоўваю наступныя

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

замест

 <a href="javascript:void(0);" onclick="myJsFunc();">Link</a> 
62
17 апр. адказ дадзены se_pavel 17 крас. 2009-04-17 09:49 '09 у 09:49 2009-04-17 09:49

Я згодны з прапановамі ў іншым месцы, заяўляючы, што вы павінны выкарыстоўваць звычайны URL-адрас у атрыбуце href , а затым выклікаць некаторую функцыю JavaScript у onclick. Недахопам з'яўляецца тое, што яны аўтаматычна дадаюць return false пасля выкліку.

Праблема з гэтым падыходам заключаецца ў тым, што калі функцыя не будзе працаваць або паўстане якая-небудзь праблема, спасылка стане непрывабнай. Падзея Onclick заўсёды будзе вяртаць false , таму звычайны URL-адрас не будзе выклікацца.

Там вельмі простае рашэнне. Хай функцыя вяртае true , калі яна працуе правільна. Затым выкарыстоўвайце вяртаецца значэнне, каб вызначыць, ці павінен клік быць адменены ці не:

JavaScript

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

HTML

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

Звярніце ўвагу, што я адмаўляю вынік функцыі doSomething() . Калі ён працуе, ён верне true , таму ён будзе адменены ( false ), а path/to/some/URL не будзе выклікацца. Калі функцыя верне false (напрыклад, браўзэр не падтрымлівае нешта, якое выкарыстоўваецца ў гэтай функцыі, ці нешта яшчэ не працуе), яно адмяняецца да true і выклікаецца path/to/some/URL .

52
27 сент. адказ дадзены Fczbkk 27 сент. 2008-09-27 13:58 '08 у 13:58 2008-09-27 13:58

# Лепш, чым 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); }); 

Вы заўсёды павінны імкнуцца да вытанчанаму дэградацыі (у выпадку, калі карыстальнік ня мае уключанага JavaScript ... і калі ён са спецыфікацыямі і бюджэтам). Акрамя таго, лічыцца няправільнай формай выкарыстоўваць JavaScript-атрыбуты і пратакол непасрэдна ў HTML.

50
23 нояб. адказ дадзены Justin Johnson 23 лістапада. 2009-11-23 23:38 '09 у 23:38 2009-11-23 23:38

Калі вы не пішаце спасылку з дапамогай JavaScript (так, каб вы ведалі, што яна ўключана ў браўзэры), вы павінны ў ідэале даць правільную спасылку для людзей, якія праглядаюць з адключаным JavaScript, а затым прадухіляюць дзеянне па змаўчанні спасылкі ў апрацоўшчыку падзей onclick. Такім чынам, функцыі з уключаным JavaScript будуць запускаць гэтую функцыю, а тыя, у каго адключаны JavaScript, пяройдуць на адпаведную старонку (ці месцазнаходжанне на той жа старонцы), а не проста на спасылку і нічога не адбудзецца.

38
25 сент. адказ дадзены Simon Forrest 25 сент. 2008-09-25 21:02 '08 а 21:02 2008-09-25 21:02

Замест гэтага рэкамендуецца выкарыстоўваць элемент <button> , асабліва калі элемент кіравання павінен вырабіць змена дадзеных. (Нешта накшталт POST.)

Гэта нават лепш, калі вы ненадакучліва ўводзіце элементы, тып прагрэсіўнага паляпшэння. (Гл. Гэты каментар .)

37
16 окт. адказ дадзены phyzome 16 каст. 2008-10-16 20:46 '08 а 20:46 2008-10-16 20:46

Вызначана hash ( # ) лепш, таму што ў JavaScript гэта псевдосхема:

  • забруджвае гісторыю
  • стварае новую копію рухавічка
  • працуе ў глабальнай вобласці дзеяння і не падтрымлівае сістэму падзей.

Вядома, "#" з апрацоўшчыкам onclick, які прадухіляе дзеянне па змаўчанні, [нашмат] лепш. Больш за тое, спасылка, якая мае адзіную мэту для запуску JavaScript, на самай справе не з'яўляецца "спасылкай", калі вы не адпраўляеце карыстальніка на які-небудзь разумны якар на старонцы (проста # адправіць на верх), калі нешта пойдзе не так . Вы можаце проста імітаваць знешні выгляд спасылкі са стылем і забыцца пра href наогул.

Акрамя таго, у дачыненні да прапановы cowgod, у прыватнасці, гэта: ...href="javascript_required.html" onclick="... Гэта добры падыход, але ён не адрознівае сцэнары" адключаны JavaScript "і" onclick fail ".

35
07 нояб. адказ дадзены Free Consulting 07 лістапада. 2009-11-07 05:26 '09 у 05:26 2009-11-07 05:26

Я звычайна іду за

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

Ён карацей javascript: void (0) і робіць тое ж самае.

30
13 авг. адказ дадзены dnetix 13 жнів. 2015-08-13 04:01 '15 у 04:01 2015/08/13 04:01

Я б выкарыстаў:

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

прычыны:

  • Гэта робіць href простым, пошукавыя сістэмы яму патрэбныя. Калі вы выкарыстоўваеце што-небудзь яшчэ (напрыклад, радок), гэта можа прывесці да памылкі 404 not found .
  • Калі мыш наводзіцца на спасылку, яна не паказвае, што гэта script.
  • Выкарыстоўваючы return false; , Старонка не перамесціцца ўверх або не зламае кнопку back .
27
16 дек. адказ дадзены Eric Yin 16 снеж. 2011-12-16 03:09 '11 у 3:09 2011-12-16 03:09

Я выбіраю выкарыстоўваць javascript:void(0) , таму што гэта можа перашкодзіць пстрычцы правай кнопкай мышы, каб адкрыць меню змесціва. Але javascript:; карацей і робіць тое ж самае.

25
26 июля '11 в 14:35 2011-07-26 14:35 адказ дадзены user564706 26 ліпеня '11 У 14:35 2011-07-26 14:35

Такім чынам, калі вы робіце некаторыя рэчы JavaScript з тэгам <a /> , і калі вы таксама ставіце href="#" , вы можаце дадаць return false ў канцы падзеі (у выпадку inline event binding), напрыклад:

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

Ці вы можаце змяніць атрыбут href з дапамогай JavaScript, напрыклад:

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

або

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

Але семантычна ўсе вышэйпададзеныя спосабы дасягнення гэтага няправільна (гэта працуе выдатна, хоць). Калі які-небудзь элемент не створаны для навігацыі па старонцы і мае некаторыя звязаныя з ім рэчы JavaScript, то ён не павінен быць тэгам <a> .

Замест гэтага вы можаце проста выкарыстоўваць <button /> для выканання якіх-небудзь дзеянняў або любога іншага элемента, такога як b, span або любы іншы, які адпавядае вашым патрэбам, таму што вам дазволена дадаваць падзеі ва ўсе элементы.


Такім чынам, ёсць адна перавага для выкарыстання <a href="#"> . Вы атрымліваеце паказальнік курсора па змаўчанні гэтага элемента, калі вы робіце a href="#" . Для гэтага я думаю, што вы можаце выкарыстоўваць CSS для гэтага тыпу cursor:pointer; , Які таксама вырашае гэтую праблему.

І ў канцы, калі вы прывязваеце падзея да самога коду JavaScript, вы можаце зрабіць event.preventDefault() для дасягнення гэтага, калі карыстаецеся тэг <a> , але калі вы не выкарыстоўваеце тэг <a> для гэтага вы атрымліваеце перавага, вам не трэба гэта рабіць.

Такім чынам, калі вы бачыце, лепш не выкарыстоўваць тэг для такога роду матэрыялаў.

23
13 февр. адказ дадзены Ashish Kumar 13 февр. 2014-02-13 06:34 '14 у 06:34 2014/02/13 06:34

Было б лепш выкарыстоўваць jQuery,

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

і апусціць як href="#" , так і href="javascript:void(0)" .

Пазначэнне пазнакі прывязкі будзе выглядаць як

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

Дастаткова проста!

22
23 окт. адказ дадзены naveen 23 каст. 2008-10-23 12:55 '08 а 12:55 2008-10-23 00:55

Не выкарыстоўвайце спасылкі з адзінай мэтай запуску JavaScript.

Выкарыстанне href = "#" пракручвае старонку уверсе; выкарыстанне void (0) стварае навігацыйныя праблемы ў браўзэры.

Замест гэтага выкарыстоўвайце элемент, выдатны ад спасылкі:

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

І стыль яго з дапамогай CSS:

 .funcActuator { cursor: default; } .funcActuator:hover { color: #900; } 
22
26 янв. адказ дадзены Garrett 26 студз. 2016-01-26 22:54 '16 а 22:54 2016/01/26 22:54

Калі вы выкарыстоўваеце AngularJS , вы можаце выкарыстоўваць наступнае:

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

Што не зробіць нічога.

Акрамя таго,

  • Гэта не прывядзе вас да пачатку старонкі, як у выпадку (#)
    • Таму вам не трэба відавочна вяртаць false з дапамогай JavaScript
  • коратка кароткае
20
26 июля '13 в 1:31 2013-07-26 01:31 адказ дадзены whirlwin 26 ліпеня '13 ў 01:31 2013/07/26 01:31

Звычайна ў вас заўсёды павінна быць спасылка вяртання, каб пераканацца, што ў кліентаў з адключаным JavaScript ўсё яшчэ ёсць некаторыя функцыі. Гэтая канцэпцыя называецца ненадакучлівым JavaScript.

Прыклад ... Скажам, у вас ёсць наступная пошукавая спасылка:

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

Вы заўсёды можаце зрабіць наступнае:

 var link = document.getElementById('searchLink'); link.onclick = function() { try { // Do Stuff Here } finally { return false; } }; 

Такім чынам, людзі з адключаным JavaScript прывязаныя да search.php , у той час як вашыя гледачы з JavaScript праглядаюць пашыраныя функцыі.

19
16 окт. адказ дадзены Andrew Moore 16 каст. 2008-10-16 21:00 '08 а 21:00 2008-10-16 21:00

Калі няма href , магчыма, няма прычын выкарыстоўваць тэг прывязкі.

Вы можаце далучаць падзеі (пстрычка, навядзенне і г.д.) амаль на кожным элеменце, таму чаму б проста не выкарыстоўваць span або div ?

І для карыстальнікаў з адключаным JavaScript: калі няма рэзервовай копіі (напрыклад, альтэрнатывы href ), яны павінны па крайняй меры не мець магчымасці бачыць і ўзаемадзейнічаць з гэтым элементам наогул, незалежна ад таго, што гэта <a> або тэга <span> .

18
29 июня '13 в 17:43 2013-06-29 17:43 адказ дадзены achairapart 29 чэрвеня '13 у 17:43 2013/06/29 17:43

Калі ў мяне ёсць некалькі спасылак faux, я аддаю перавагу даць ім клас "no-link".

Затым у jQuery я дадаю наступны код:

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

І для HTML спасылка проста

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

Мне не падабаецца выкарыстоўваць Hash-тэгі, калі яны не выкарыстоўваюцца для прывязак, і я раблю толькі гэта, калі ў мяне ёсць больш за два faux-спасылак, інакш я іду з javascript: void (0).

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

Як правіла, мне падабаецца проста пазбягаць выкарыстання спасылкі наогул і проста пераносіць што-то ў прамежку і выкарыстоўваць гэта як спосаб для працы з некаторым кодам JavaScript, напрыклад ўсплывальнае акно ці раскрыццё змесціва.

16
25 июня '12 в 22:34 2012-06-25 22:34 адказ дадзены Stacks on Stacks on Stacks 25 чэрвеня '12 а 22:34 2012-06-25 22:34

Я лічу, што вы ўяўляеце ілжывую дыхатамію. Гэта не адзіныя два варыянты.

Я згодны са спадаром D4V360, які выказаў здагадку, што, хоць вы карыстаецеся якарнай тэг, у вас сапраўды няма якара тут. Усё, што ў вас ёсць, - гэта спецыяльны раздзел дакумента, які павінен паводзіць сябе крыху інакш. Тэг <span> значна больш дарэчны.

16
26 сент. адказ дадзены Clever Human 26 сент. 2008-09-26 00:20 '08 у 0:20 2008-09-26 00:20

У залежнасці ад таго, што вы хочаце выканаць, вы можаце забыць onclick і проста выкарыстоўваць href:

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

Ён абыходзіць неабходнасць вяртаць false. Мне не падабаецца параметр # , таму што, як ужо згадвалася, ён будзе знаходзіцца ў верхняй частцы старонкі. Калі ў вас ёсць дзесьці яшчэ, каб адправіць карыстальніка, калі ў іх няма JavaScript (што рэдка, дзе я працую, але вельмі добрая ідэя), то Стыў прапанаваў метад выдатна працуе.

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

Нарэшце, вы можаце выкарыстоўваць javascript:void(0) , калі вы не хочаце, каб хто-то нікуды сыходзіў, і калі вы не хочаце выклікаць функцыю JavaScript. Ён выдатна працуе, калі ў вас ёсць выява, з якім вы хочаце выканаць падзея mouseover, але для карыстальніка няма чаго рабіць.

16
26 сент. адказ дадзены Will Read 26 сент. 2008-09-26 00:02 '08 у 0:02 2008-09-26 00:02

Я паспрабаваў абодва ў google chrome з інструментамі распрацоўніка, а id="#" заняў 0,32 секунды. У той час як метад javascript:void(0) заняў усяго 0,18 секунды. Такім чынам, у Chrome Google javascript:void(0) працуе лепш і хутчэй.

16
29 окт. адказ дадзены user6460587 29 каст. 2016-10-29 22:10 '16 у 22:10 2016/10/29 22:10

Я ў асноўным Перафразую гэтую практычную артыкул з выкарыстаннем прагрэсіўнага паляпшэння . Короткий ответ заключается в том, что вы никогда не используете javascript:void(0); или # , если ваш пользовательский интерфейс уже не определил, что JavaScript включен, и в этом случае вы должны использовать javascript:void(0); . Кроме того, не используйте span в качестве ссылок, поскольку для начала это семантически ложно.

Использование SEO дружественных URL-адресов в вашем приложении, таких как /Home/Action/Parameters, является хорошей практикой. Если у вас есть ссылка на страницу, которая работает без JavaScript, вы можете улучшить опыт после этого. Используйте реальную ссылку на рабочую страницу, а затем добавьте событие onlick, чтобы улучшить презентацию.

Вось прыклад. Главная /ChangePicture - это рабочая ссылка на форму на странице в комплекте с пользовательским интерфейсом и стандартными кнопками отправки 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> 
13
ответ дан Josh Simerman 15 дек. '11 в 1:09 2011-12-15 01:09