JavaScript "#" və ya "javascript: void (0)" istinadları üçün "href" nin hansı dəyəri istifadə edilməlidir?

Aşağıda, JavaScript kodunun işləməsinin yeganə məqsədi olan link qurmanın iki üsuludur. İşlevsellik, səhifə yükləmə sürəti, doğrulama məqsədləri və s. Baxımından daha yaxşı nədir?

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

və ya

  <a href="javascript:void(0)" onclick="myJsFunc();">Run JavaScript Code</a> 
3771
25 сент. 2cBGj7vsfp Sep 25'e təyin edin 2008-09-25 20:54 '08 at 8:54 pm 2008-09-25 20:54
@ 54 cavab
  • 1
  • 2

javascript:void(0) istifadə edirəm javascript:void(0) .

Üç səbəb. İnkişaf qrupu arasında # istifadə edilməsini təşviq etmək qətiliklə bir funksiyanın qaytarılması dəyərinin bəzi istifadə edilməsinə gətirib çıxarır:

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

Lakin return doSomething() istifadə etməyi unutmayın və yalnız doSomething() istifadə edin.

# Qarşısını almaq üçün ikinci səbəb isə yekun return false; çağırılan funksiyanı səhv verərsə icra edilməyəcəkdir. Buna görə də, geliştiricilər də çağırılan funksiyadan hər hansı bir səhvəni düzgün şəkildə həll etməyi unutmayın.

Üçüncü səbəb onclick hadisə əmlakının dinamik olaraq təyin olunduğu hallarda olur. Bir funksiyanı çağırmaq və ya bir yuva üsulu və ya başqa bir funksiyanı kodlaşdırmaq üçün dinamik olaraq təyin etmək üstünlük verirəm. Nəticədə HTML formatında mənim onclick (və ya bir şey) belə görünür:

 onclick="someFunc.call(this)" 

Və ya

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

javascript:void(0) istifadə javascript:void(0) bütün yuxarıda göstərilən baş ağrısı qarşısını alır və mən çatışmazlıqlar nümunələri tapmıram.

Beləliklə, əgər tək bir işəgötürən olsanız, öz seçiminizi edə bilərsiniz, ancaq bir qrupda işləsəniz, aşağıdakıları göstərməlisiniz:

onclick həmişə return false; ehtiva etmək üçün href="#" istifadə edin return false; sonunda, hər hansı bir funksiyanın çağırılmaması səhv verməyəcəyini və funksiyanı onclick xüsusiyyətinə dinamik olaraq əlavə etsəniz, səhv vermədən false döndüyünə əmin olun.

Və ya

border=0

href="javascript:void(0)"

İkincisi, ünsiyyət qurmaq çox asandır.

2052
26 сент. Cavab AnthonyWJones tərəfindən 26 sentyabrda verilir . 2008-09-26 11:03 '08 saat 11:03 'də 2008-09-26 11:03

Nə də.

Bunu bir href olaraq istifadə etmək üçün mənalı bir gerçək URL ola bilərsən. Kimsə, yeni bir sekməni açmaq üçün linkinizə tıkladığında və ya javascript əlil olduqda Onclick işləməyəcəkdir.

Bu mümkün deyilsə, ən azı JavaScript və uyğun klik hadisələri işləyənləri istifadə edərək, çapa etiketini sənədə daxil etməlisiniz.

border=0

Mən başa düşürəm ki, bu həmişə mümkün deyil, amma hesab edirəm ki, o, ictimaiyyətə çatdırılan hər hansı bir veb-sayt hazırlamağa çalışmalıdır.

Çirkin javascriptimütərəqqi genişləndirməni (həm wikipedia) atın.

1228
25 сент. Cavab Aaron Wagner tərəfindən verilir . 2008-09-25 21:09 '08 at 9:09 pm 2008-09-25 21:09

<a href="#" onclick="myJsFunc();">Link</a> <a href="javascript:void(0)" onclick="myJsFunc();">Link</a> ya da <a href="javascript:void(0)" onclick="myJsFunc();">Link</a> ya da onclick xüsusiyyətini ehtiva edən başqa bir şey beş il əvvəl geri verildi, baxmayaraq ki, artıq pis bir təcrübə ola bilər. Buna görə:

  • Bu, obsesif JavaScript-lərin tətbiqinə kömək edir - qorumaq çətin və miqyaslı çətinləşdirilmişdir. Bununla əlaqədar daha çox oxuyun javascript .

  • Vaxtınızı olduqca mürəkkəb bir ətraflı kodu yaratmaq üçün sərf edirsiniz ki, çox az (əgər varsa) sizin codebase istifadə edir.

  • Artıq istənilən nəticəyə nail olmaq üçün daha yaxşı, daha asan və daha rahat və ölçeklendirilebilir yollar var.

Çirkin javascript

Sadəcə href yoxdur! Hər hansı bir yaxşı CSS sıfırlama eksik default kursorun tərzini izləyəcək, buna görə problem yoxdur. Daha sonra, JavaScript məntəqələriniz JavaScript-də qalır və formatlaşdırmada deyil, çünki mantığın bölüşdürülməsini tələb edən geniş miqyaslı JavaScript proqramları hazırlanırken lazım olan JavaScript funksiyalarını zərif və göz qabağındakı inkişaf etmiş metodlardan istifadə etməklə əlavə edin. qara komponentlər və nümunələr. Bu barədə geniş miqyaslı JavaScript proqram mimarisinde daha çox məlumat əldə edin .

Sadə kod nümunəsi

 a { cursor: pointer; color: blue; } a:hover,a.hover { text-decoration: underline; } 
Məsələn Backbone.js 

Ölçeklenebilir, siyah bir qutu örneği olan Backbone.js bileşeni - burada çalışan jsfiddle nümunəsinə baxın . JavaScript ilə işləməyinizin qeyri-səmimiyyətli metodlarını necə istifadə etdiyimizə diqqət yetirin və kodun az miqdarında, komponentlərin fərqli nümunələri arasında yan təsirlər və münaqişələr olmadan səhifədə bir neçə dəfə təkrarlana bilən bir komponent mövcuddur. Awesome!

Qeydlər

  • href elementə salınması elementin tab düyməsini naviqasiya edilərək əlçatmaz olmasına səbəb olacaq. Bu elementlərin tab düyməsini istifadə etmək üçün əlçatan olmasını istəyirsinizsə, tabindex təyin edə və ya yerinə button istifadə edə button . Tracker1-in cavabında göstərildiyi kimi asanlıqla müntəzəm əlaqə kimi baxmaq üçün düyməni elementləri asanlıqla tərtib edə bilərsiniz.

  • href özniteliğinin elementə salınması Internet Explorer 6Internet Explorer 7-a:hover stilini qəbul etməyəcək, beləliklə, a.hover ilə bunu etmək üçün sadə bir JavaScript zolağı əlavə a.hover . Href xassəsinə malik olmadınız və heç bir pozitiv pozulma olmadığı kimi, mükəmməl normaldır, onda sizin linkiniz heç də işləməyəcək və daha ciddi problemlər olacaq.

  • Hərəkətinizin hələ də javascript ilə işləməyini istəməyiniz istisna etsəniz, bir Ajax sorğusu ya da başqa bir şeyin bir yolu olmalıdır, aksiyanı əl ilə yerinə yetirən bəzi URL ünvanlarına göndərilən href ilə bir elementdən istifadə edin. Bunu event.preventDefault() zaman event.preventDefault() düyməsini tıkladığınız zaman linkə əməl etmədiyinə əmin olmaq istəyirsən. Bu seçim zərif deqradasiya adlanır.

750
25 февр. balupton tərəfindən verilən cavabı 25 fevral 2012-02-25 05:08 '12 at 5:08 2012-02-25 05:08

'#' istifadəçi səhifənin yuxarısına qaytarır, buna görə də adətən void(0) gedərəm.

javascript:; javascript:void(0); kimi davranır javascript:void(0);

285
25 сент. Cavab Adam Tuttle tərəfindən Sentyabr 25 verilir 2008-09-25 20:55 '08 saat 20:55 'da 2008-09-25 20:55

Mən dürüst bir və ya digər təklif etmirəm. Bu davranış üçün stilize bir <button> </button> istifadə edərdim.

Buna görə onclick'i atayabilirsiniz. Mən də element etiketindəki onclick xüsusiyyətindən istifadə etmədən skriptə bənzəyirəm. Alınan yeganə mətn, əlil oluna bilməyən köhnə IE-də psuedo mətn effektidir.


A elementini istifadə javascript: void (0); , javascript: void (0); istifadə edin javascript: void (0); artıq qeyd edilən səbəblər üzündən.

  • Bir onclick hadisəsi baş verdiyi halda həmişə ələ alınacaq.
  • Hash dəyişikliklərinə əsaslanan zənglərin və ya digər hadisələrin səhv yüklənməsi olmayacaq.
  • Bir xaş etiketi, gözlənilməz davranışa səbəb ola bilər ki, bir tıklama düşərsə (onclick atır), bunun qarşısını alır, əgər bu düzgün davranış olmasa və naviqasiya tarixini dəyişmək istəyirsən.

Qeyd. Siz, həqiqətən, bir klik göstərəcək əlavə göstərici kimi xidmət edə biləcək javascript: void ('Удалить запись 123') kimi bir simli ilə əvəz edə bilərsiniz.

233
15 дек. Cavab verdi Tracker1 15 dekabr. 2011-12-15 21:41 '11 də 21:41 'də 2011-12-15 21:41

Birincisi, istifadəçi JavaScript-ni işə saldıqda ideal bir şəkildə. Yalnız JavaScript işlədikdə tıklama hadisəsinin qarşısını almaq üçün saxta dönün.

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

Angular2 istifadə edirsinizsə, bu üsul işləyir:

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

Baxın on123.ru.site/questions/23049 / ...

131
25 сент. cavab Zach 25 sep verilir . 2008-09-25 20:56 '08 at 8:56 pm 2008-09-25 20:56

Mənə soruşma

Sizin "linkiniz" bəzi javascript kodlarının işlədilməsinin yeganə məqsədi varsa, bu bir əlaqə kimi uyğun deyil; əksinə, onunla əlaqəli bir javascript funksiyası olan mətn parçasıdır. <span> etiketi əlavə edilmiş bir onclick handler ilə və birbaşa əlaqələndirmək üçün bir neçə əsas CSS-ni istifadə etməyi tövsiyə edirəm. Linklər naviqasiya üçün hazırlanır və JavaScript <a> naviqasiya üçün nəzərdə tutulmadıqda, bu <a> etiketi olmamalıdır.

Məsələn:

 .jsAction { cursor: pointer; color: #00f; text-decoration: underline; } 
92
25 сент. cavab fijter 25 sep verilir . 2008-09-25 21:59 '08 saat 09:59 'da 2008-09-25 21:59

İdeal olaraq bunu edərdin:

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

Yoxsa daha da yaxşı HTML-lərdə default aksiyaya bir keçidiniz var və siz DOM-dan sonra JavaScript vasitəsilə qeyri-səmimili şəkildə onclick bir hadisə əlavə edirsiniz, beləliklə, heç bir JavaScript mövcud deyil / istifadə edilmədikdə təminatsız işləyiciləriniz yoxdur kodunuzu nüfuz edən və faktiki məzmununuzdan potensial olaraq qarışıqlaşan (və ya ən azı yayındırıcı) hadisələr.

92
25 сент. Cavab Steve Paulo tərəfindən verilir 25 sep. 2008-09-25 21:35 '08 at 21:35 pm 2008-09-25 21:35

Yalnız # istifadə edərək bəzi komik hərəkətlər edir, buna görə də səy göstərdiyiniz zaman JavaScript bla, bla, saxlamaq istəyirsinizsə, #self istifadə edərək #self .

74
24 сент. Cavab Spamer Joe tərəfindən verilir. 2011-09-24 04:55 '11 də 4:55 'də 2011-09-24 04:55

Mən aşağıdakıları istifadə edirəm

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

əvəzinə

 <a href="javascript:void(0);" onclick="myJsFunc();">Link</a> 
62
17 апр. cavab se_pavel 17 apr verilir . 2009-04-17 09:49 '09 da 9:49, 2009-04-17 09:49

href adi URL'yi istifadə etməli olduğunuzu və sonra onclick-də bəzi JavaScript funksiyasını çağırdığınızı bildirdiyiniz başqa bir yerdə təklifləri qəbul edirəm. Dezavantajdan ötəri return false sonra avtomatik olaraq return false .

Bu yanaşma problemi, əgər funksiya işləməsə və ya hər hansı bir problem varsa, bu link cəlbedici olacaqdır. Onclick hadisə həmişə false qaytarılacaq, buna görə müntəzəm URL çağırılmayacaq.

Çox sadə bir həll var. Düzgün işləyərsə funksiyanı true qaytarın. Sonra klikin ləğv olunmaması və ya edilməməsinin müəyyənləşdirilməsi üçün qaytarma dəyərini istifadə edin:

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() funksiyasının nəticəsini inkar etdiyini unutmayın. Işə true , bu həqiqətə dönəcəkdir, buna görə ləğv olunacaq ( false ) və path/to/some/URL çağrılmayacaq. Əgər funksiya false qaytarırsa (məsələn, brauzer bu funksiyada istifadə olunan bir şeyi dəstəkləmirsə və ya başqa bir şey işləmirsə), truepath/to/some/URL ünvanına qədər ləğv path/to/some/URL .

52
27 сент. cavab Fczbkk 27 sep verilir . 2008-09-27 13:58 '08 at 13:58 pm 2008-09-27 13:58

# javascript:anything daha yaxşı javascript:anything , lakin daha yaxşı:

HTML:

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

Javascript:

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

Siz hər zaman zərif tənəzzül üçün səy göstərməlisiniz (istifadəçinin javascriptə sahib olmadıqda ... və onun xüsusiyyətləri və büdcəsi ilə olduqda). Bundan əlavə, JavaScript-in özniteliklerini və protokolunu birbaşa HTML-də istifadə etmək üçün qeyri-müntəzəm bir forma sayılır.

50
23 нояб. Cavab Justin Johnson tərəfindən 23 noyabrda verilir . 2009-11-23 23:38 '09 at 11:38 PM 2009-11-23 23:38

JavaScript istifadə edərək, bir keçid yazmıyorsanız (brauzerinizdə effektiv olduğunu bildiyiniz üçün), JavaScript'ü aradan bıraktığınız kişiler üçün doğru bir keçid təmin etməlisiniz və onclick olay işleyicisindeki linki varsayılan eylemini engellemelisiniz. Beləliklə, javascript ilə fəaliyyət göstərən funksiyalar bu funksiyanı yerinə yetirəcək və javascript əlilliyi olanlar müvafiq səhifəyə (ya da həmin səhifənin yerləşdiyi yerə) gedəcək, yalnız bir keçid deyil və heç bir şey olmayacaqdır.

38
25 сент. Simon Forrest tərəfindən verilmiş cavab Sep 25 2008-09-25 21:02 '08 at 21:02 2008-09-25 21:02

Bunun əvəzinə, <button> elementini istifadə etmək məsləhətdir, xüsusilə də nəzarət məlumatlara dəyişiklik etməlidir. (POST kimi bir şey.)

Elemanı qeyri-səmimiyyətlə təqdim edərkən, bir tərəqqi inkişafın növü daha yaxşıdır. ( Bu şərhə baxın.)

36
16 окт. Cavab 16 oktyabrda phyzome tərəfindən verilir . 2008-10-16 20:46 '08 saat 20:46 'da 2008-10-16 20:46

Şübhəsiz hash ( # ) daha yaxşıdır, çünki javascript bir söz-sxemdir:

  • hekayəni çirkləndirir
  • mühərrikin yeni bir surətini yaradır
  • qlobal miqyasda işləyir və hadisə sistemini dəstəkləmir.

Əlbəttə ki, "#" onclick işləyicisi ilə, default tədbirin qarşısını alır, çox daha yaxşıdır. Bundan əlavə, JavaScript başlamasının yeganə məqsədi olan bir keçid həqiqətən bir "link" deyildirsə, bir istifadəçi səhifəni məqsədəuyğun bir zərbəyə göndərməyincə (yalnız # üstə göndərin) bir şey yanlış gedirsə . Siz sadəcə üslubla əlaqənin görünüşünü təqlid edə bilərik və ümumiyyətlə href haqqında unuta bilərsiniz.

Bundan əlavə, cowgod təklifinə gəldikdə, xüsusilə: ...href="javascript_required.html" onclick="... Bu yaxşı bir yanaşma, ancaq" əlil JavaScript "və" onclick uğursuzluq "ssenariləri arasında fərq yoxdur.

35
07 нояб. Cavab Free Consulting tərəfindən 07 Noyabr. 2009-11-07 05:26 '09 saat 05:26 'da 2009-11-07 05:26

Mən adətən gedirəm

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

Javascriptdən daha qısa: void (0) və eynidır.

30
13 авг. cavab dnetix 13 aug verilir . 2015-08-13 04:01 '15 at 4:01 'də 2015-08-13 04:01

Mən istifadə edərdim:

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

Nedenler:

  • Bu href sadələşdirir, axtarış motorlarına ehtiyacı var. Başqa bir şey (məsələn, bir simli) istifadə etsəniz, 404 not found .
  • Siçan bir keçid üzərində keçərkən, bu bir skript olduğunu göstərmir.
  • return false; istifadə return false; , səhifə yuxarıya getməyəcək və ya back düyməsini kəsməyəcək.
27
16 дек. Eric Yin tərəfindən verilmiş cavab 16 dekabr 2011-12-16 03:09 '11 at 3:09 2011-12-16 03:09

javascript:void(0) ni istifadə edirəm javascript:void(0) , çünki məzmun menyusunu açmaq üçün sağ tıklayıma mane ola bilər. Lakin javascript:; daha qısa və eyni.

25
26 июля '11 в 14:35 2011-07-26 14:35 cavab 26 iyul 2011 -ci il saat 14 : 35 -də user564706 tərəfindən verilmişdir 2011-07-26 14:35

Belə ki, <a> tag ilə bəzi JavaScript işlərini edərkən və href="#" də qurduğunuz halda, hadisənin sonunda (inline hadisə cədvəli halında) qayıtmaq səhvlərini əlavə edə bilərsiniz, məsələn:

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

Və ya javascript istifadə edərək, href atributunu dəyişə bilərsiniz, məsələn:

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

və ya

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

Ancaq semantically, bu nail olmaq üçün yuxarıda bütün yolları səhvdir (baxmayaraq ki, gözəl işləyir). Səhifəni seyr etmək üçün bir element yaradılmır və onunla əlaqəli bəzi JavaScript varsa, o, bir <a> etiketi olmamalıdır.

Bunun əvəzinə sadəcə, hər bir elementə hadisələr əlavə etməyə icazə verdiyiniz üçün, bəzi hərəkətləri və ya b, span və ya ehtiyaclarınıza uyğun olan digər hər hansı bir elementi yerinə yetirmək üçün <button /> istifadə edə bilərsiniz.


Belə ki <a href="#"> istifadə etmək üçün bir üstünlük var . a href="#" etdiyiniz zaman bu maddənin default imleci göstəricisini alırsınız. Bunun üçün, bu cür cursor:pointer; üçün CSS-dən istifadə edə bilərsiniz cursor:pointer; bu problemi də həll edir.

Nəhayət, əgər hadisəni JavaScript kodunu özündə birləşdirirsinizsə, <a> etiketi istifadə etsəniz, bunun üçün nail olmaq üçün event.preventDefault() edə bilərsiniz, amma bunun üçün <a> etiketi istifadə event.preventDefault() , bir üstünlük əldə edirsinizsə, lazım deyil bunu et.

Beləliklə, əgər görürsünüzsə, bu cür materialların etiketini istifadə etməmək daha yaxşıdır.

23
13 февр. Bu cavab fevralın 13-də Əşiş Kumar tərəfindən verilir . 2014-02-13 06:34 '14 at 06:34 2014-02-13 06:34

JavaScript-ni işləməyin yeganə məqsədi üçün istifadə etməyin.

Href = "#" istifadə edərək, səhifəni yuxarıya doğru hərəkət etdirir; boşluğu istifadə edərək (0) brauzerdə naviqasiya problemləri yaradır.

Bunun əvəzinə, linkdən başqa bir element istifadə edin:

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

Və CSS ilə stil:

 .funcActuator { cursor: default; } .funcActuator:hover { color: #900; } 
22
26 янв. Garrett tərəfindən verilmiş cavab 26 yanvar 2016-01-26 22:54 '16 saat 10:54 'da 2016-01-26 22:54

JQuery istifadə etmək daha yaxşı olardı,

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

href="#"href="javascript:void(0)" .

Etiket etiketi görünüşü görünəcək

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

Kifayət qədər sadədir!

22
23 окт. Cavab 23 oktyabr naveen verilir . 2008-10-23 12:55 '08 at 12:55 2008-10-23 12:55

AngularJS istifadə edirsinizsə, aşağıdakılardan istifadə edə bilərsiniz:

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

Bu bir şey etməyəcək.

Bundan əlavə,

  • Bu, səhifənin yuxarı hissəsinə deyil, vəziyyətə (#)
    • Buna görə də, javascript istifadə edərək false açıq şəkildə qaytarmağa ehtiyacınız yoxdur
  • Qısa
20
26 июля '13 в 1:31 2013-07-26 01:31 cavab 26 iyul 'da saat 01:31' da veriləcək 2013-07-26 01:31

Adətən javascript ilə işləyən müştərilərin bəzi xüsusiyyətlərə malik olduğundan əmin olmaq üçün həmişə bir geri dönüş bağlantısı olmalıdır. Bu konsepsiya göz ardıcıl javascript adlanır.

Məsələn ... Gəlin aşağıdakı axtarış linkə sahibsiniz:

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

Həmişə aşağıdakıları edə bilərsiniz:

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

Beləliklə, javascript əlilliyi olan insanlar search.php ilə bağlıdır, javascript ilə görüntüləyənlər isə inkişaf etmiş xüsusiyyətlərə search.php .

19
16 окт. Cavab 16 oktyabrda Andrew Moore tərəfindən verilir . 2008-10-16 21:00 '08 saat 21:00 'da, 2008-10-16 21:00' de

href olmaması halında, çapa etiketi istifadə etmək üçün heç bir səbəb ola bilməz.

Siz demək olar ki, hər bir elementdə hadisələr əlavə edə bilərsiniz (tıkla, hover, və s.), Buna görə niyə yalnız bir span və ya div etmirsiniz?

Əlaqədar JavaScript olan istifadəçilər üçün: əgər heç bir backup (məsələn, href üçün alternativlər) olmadıqda, bir <a> və ya <span> olub-olmamasından asılı olmayaraq ən azı bu elementi görmək və qarşılıqlı əlaqələndirməməlidirlər.

18
29 июня '13 в 17:43 2013-06-29 17:43 cavab 29 avqust 2013 - il saat 17: 43- dək aledgeapart verilir

Başa çatmaq istədiklərinizdən asılı olaraq onclick'ı unuta və yalnız href istifadə edə bilərsiniz:

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

Bu, yalanı qaytarmağın zərurətini atır. # Parametrini sevmirəm, çünki artıq qeyd olunduğu kimi, bu səhifənin yuxarı hissəsində olacaqdır. Bir istifadəçi göndərmək üçün başqa bir yerə sahibsinizsə, javascriptə sahib olmadıqda (mənim işim nadirdir, amma çox yaxşı bir fikirdir), Steve üsulu yaxşı işlədib.

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

Nəhayət, javascript:void(0) istifadə edə bilərsiniz javascript:void(0) Əgər kimsə bir yerə getmək istəmirsinizsə və javascript funksiyasını zəng etmək istəməsəniz. Bir mouseover hadisə yerinə yetirmək istədiyiniz bir şəkil varsa yaxşı işləyir, lakin istifadəçi üçün bir şey yoxdur.

16
26 сент. Cavab veriləcəkdir. 2008-09-26 00:02 '08 at 0:02 2008-09-26 00:02

Hər iki google kromunda geliştirici vasitələrlə çalışdım və id="#" 0.32 saniyə çəkdi. javascript:void(0) metodu isə yalnız 0.18 saniyə çəkdi. Belə ki, google chrome javascript:void(0) daha yaxşı və daha sürətli işləyir.

16
29 окт. İstifadəçi tərəfindən verilmiş cavab 6460587 Oct 29 2016-10-29 22:10 '16 saat 10:10 'da 2016-10-29 22:10

İnanıram ki, siz yalançı dikotomiyanı təmsil edirsiniz. Bunlar yalnız iki variant deyil.

Doqquz D4V360 ilə razıyam ki, bir çapa etiketi istifadə etsən də, həqiqətən burada bir zolaq yoxdur. Sizdə olan hər şey bir az fərqli davranmalı olan sənədin xüsusi bir hissəsidir. <span> daha vacibdir.

16
26 сент. Cavab 26 Sentyabrda Ağıllı İnsana verilir . 2008-09-26 00:20 '08 at 0:20 'da 2008-09-26 00:20

Bir neçə səhv linkə sahib olduğumda onlara "heç bir link" sını verməyi üstün edirəm.

Sonra jQuery-də aşağıdakı kodu əlavə edin:

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

Və HTML üçün link yalnız

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

Hash tags istifadə etmək istəmirəm əgər bağlama üçün istifadə və mən yalnız iki səhv bağlantılar var, yalnız bunu, mən başqa javascript ilə getmək: void (0).

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

Bir qayda olaraq, mən ümumi bir linkdən istifadə etməməyi və yalnız bir şey arasında sürükləməyi və bir açılır pəncərə və ya məzmunun açıqlanması kimi bəzi JavaScript kodu ilə işləmək üçün istifadə etmək istərdim.

16
25 июня '12 в 22:34 2012-06-25 22:34 cavab 25 iyun 'da 10:34' da saat 10: 34-da 2012-06-25 22:34

Mən əsasən bu praktiki məqaləni mütərəqqi təkmilləşdirməni istifadə edərək yenidən dərk edirəm. Короткий ответ заключается в том, что вы никогда не используете javascript:void(0); или # , если ваш пользовательский интерфейс уже не определил, что JavaScript включен, и в этом случае вы должны использовать javascript:void(0); . Кроме того, не используйте span в качестве ссылок, поскольку для начала это семантически ложно.

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

Burada bir nümunə. Главная /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

Я бы сказал, что лучший способ - сделать привязку href к ID, который вы никогда не использовали, например, # Do1Not2Use3This4Id5 или похожий идентификатор, который вы на 100% уверены, что никто не будет использовать и не оскорбит людей.

  • Javascript:void(0) является плохой идеей и нарушает политику безопасности контента на страницах HTTPS с поддержкой CSP https://developer.mozilla.org/en/docs/Security/CSP (благодаря @jakub.g )
  • Использование только # приведет к тому, что пользователь вернется к началу при нажатии
  • Не разрушит страницу, если JavaScript не включен (если у вас нет кода обнаружения JavaScript
  • Если JavaScript включен, вы можете отключить событие по умолчанию
  • Вы должны использовать href, если не знаете, как запретить браузеру выбирать какой-либо текст (не знаю, удастся ли использовать 4, что не позволяет браузеру выбирать текст).

В принципе, никто не упомянул 5 в этой статье, которые, по моему мнению, важны, поскольку ваш сайт отключается как непрофессиональный, если он вдруг начинает выбирать элементы вокруг ссылки.

11
ответ дан Anders M. 20 марта '14 в 13:55 2014-03-20 13:55
  • 1
  • 2

Другие вопросы по меткам или Задайте вопрос