JS - Якая розніца тут?

Я пачатковец у JS, і было б вельмі карысна ведаць, што differenece паміж наступнымі двума, калі ўмовамі заявы ...

Першая ўмова (на самай справе не працуе):

if ( window.location.pathname == '/#register' ) {

// Code

}

Другая ўмова:

if (document.URL.indexOf("#register") >= 0) {

// Code...

}

FYI, this would help me solve a bug I'm experiencing here

1
У мяне цяпер;) ён кажа, што гэта проста /
дададзена аўтар M_Willett, крыніца
У мяне цяпер;) ён кажа, што гэта проста /
дададзена аўтар M_Willett, крыніца
Вы спрабавалі console.log (window.location.pathname) , каб убачыць, што значэнне на самой справе?
дададзена аўтар JJJ, крыніца
Ну, гэта ваша праблема. Здаецца, што вы на самай справе хочаце window.location.hash .
дададзена аўтар JJJ, крыніца

7 адказы

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

The second one checks the string contains "#register", so the full path could be bigger, like /#register_or_not or /some/other/path#register

Магчыма, лепшым варыянтам было б зрабіць рэгулярны выраз матч шаблон на URL, каб пераканацца, што ён адпавядае хэш ТОЛЬКІ «зарэгістраваць», дазваляючы пры гэтым астатнюю частку URL, каб быць што заўгодна:

if (document.URL.match(/.*#register$/)) {
6
дададзена
@StevenMoseley Гэта CW, не саромейцеся рэдагаваць, каб зрабіць яго лепш.
дададзена аўтар Denys Séguret, крыніца
Хоць я не пайшоў з гэтым, я адчуваў, што гэта адказаў на пытанне лепш. Можна ўбачыць жывую, выпраўленую версію гэтага ў <�а HREF = "https://www.tradechase.com" отн = "NOFOLLOW noreferrer"> tradechase.com
дададзена аўтар M_Willett, крыніца
Асноўная праблема заключаецца ў тым, што window.location.pathname не ўтрымлівае хэш.
дададзена аўтар JJJ, крыніца
Ці больш верагодна /некаторыя/іншыя/шлях # рэгістр
дададзена аўтар Steven Moseley, крыніца

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

The second one checks the string contains "#register", so the full path could be bigger, like /#register_or_not or /some/other/path#register

Магчыма, лепшым варыянтам было б зрабіць рэгулярны выраз матч шаблон на URL, каб пераканацца, што ён адпавядае хэш ТОЛЬКІ «зарэгістраваць», дазваляючы пры гэтым астатнюю частку URL, каб быць што заўгодна:

if (document.URL.match(/.*#register$/)) {
6
дададзена
@StevenMoseley Гэта CW, не саромейцеся рэдагаваць, каб зрабіць яго лепш.
дададзена аўтар Denys Séguret, крыніца
Хоць я не пайшоў з гэтым, я адчуваў, што гэта адказаў на пытанне лепш. Можна ўбачыць жывую, выпраўленую версію гэтага ў <�а HREF = "https://www.tradechase.com" отн = "NOFOLLOW noreferrer"> tradechase.com
дададзена аўтар M_Willett, крыніца
Асноўная праблема заключаецца ў тым, што window.location.pathname не ўтрымлівае хэш.
дададзена аўтар JJJ, крыніца
Ці больш верагодна /некаторыя/іншыя/шлях # рэгістр
дададзена аўтар Steven Moseley, крыніца

Другі проста праверыць, калі URL-адрас утрымлівае #Register, першы шлях URL-адрас, вы можаце зрабіць гэта таксама з location.hash

if(location.hash=='#register') { //....
2
дададзена
Дзякуй, гэта метад, які я выкарыстаў. Ён выпраўляе гэтай памылкі які зараз жыве ў tradechase.com
дададзена аўтар M_Willett, крыніца

Другі проста праверыць, калі URL-адрас утрымлівае #Register, першы шлях URL-адрас, вы можаце зрабіць гэта таксама з location.hash

if(location.hash=='#register') { //....
2
дададзена
Дзякуй, гэта метад, які я выкарыстаў. Ён выпраўляе гэтай памылкі які зараз жыве ў tradechase.com
дададзена аўтар M_Willett, крыніца

Першы з іх выконвае дакладнае адпаведнасць паміж window.location.pathname і /# рэгістр . Другі шукаецца #Register ў любым месцы document.URL .

1
дададзена

Першы з іх выконвае дакладнае адпаведнасць паміж window.location.pathname і /# рэгістр . Другі шукаецца #Register ў любым месцы document.URL .

1
дададзена

Гэта калі блок правярае радок ці з'яўляюцца яны роўныя або няма

if ( window.location.pathname == '/#register' ) {

//Code

}

Метад IndexOf() вяртае пазіцыю першага ўваходжання зададзенага значэння ў радку.

Гэты метад вяртае -1, калі значэнне для пошуку не адбываецца.

if (document.URL.indexOf("#register") >= 0) {

  //Code...

}
1
дададзена