Untuk apa & amp digunakan

110

Apakah ada perbedaan perilaku URL di bawah ini.

Saya tidak tahu mengapa &dimasukkan, apakah ada bedanya?

www.testurl.com/test?param1=test&current=true

melawan

www.testurl.com/test?param1=test&current=true
langit biru
sumber
1
Bisakah Anda memberi konteks? Apakah ini dalam bentuk tindakan? Baru saja ditampilkan di halaman?
jprofitt
@ user470184 Saya tidak downvote tetapi mempertimbangkannya. Ada banyak informasi di SO mengenai masalah ini.
Charles Sprayberry
"Perilaku umum" masih sangat kabur. Apakah Anda bertanya-tanya tentang sesuatu seperti <p>www.testurl.com/test?param1=test&amp;current=true</p>atau <a href="www.testurl.com/test?param1=test&amp;current=true">linky</a>?
jprofitt
@ jprofitt <a href="www.testurl.com/test?param1=test&current=true"> linky </a>
langit biru

Jawaban:

127

& adalah HTML untuk "Awal referensi karakter".

&amp; adalah referensi karakter untuk "An ampersand".

&current; bukan referensi karakter standar dan begitu juga kesalahan (browser mungkin mencoba melakukan pemulihan kesalahan tetapi Anda tidak harus bergantung pada ini).

Jika Anda menggunakan referensi karakter untuk karakter nyata (misalnya &trade;) maka itu (™) akan muncul di URL, bukan string yang Anda inginkan.

(Perhatikan bahwa tergantung pada versi HTML yang Anda gunakan, Anda mungkin harus mengakhiri referensi karakter dengan a ;, itulah sebabnya &trade=akan diperlakukan sebagai ™. ​​HTML 4 memungkinkannya untuk dihilangkan jika karakter berikutnya adalah karakter non-kata ( seperti =) tetapi beberapa browser (Halo Internet Explorer) memiliki masalah dengan ini).

Quentin
sumber
5

Sumber Saya: http://htmlhelp.com/tools/validator/problems.html#amp

Kesalahan umum lainnya terjadi saat menyertakan URL yang berisi ampersand ("&"):

Ini tidak valid:

a href = "foo.cgi? chapter = 1 & bagian = 2 & copy = 3 & lang = en"

Penjelasan:

Contoh ini menghasilkan kesalahan untuk "bagian entitas yang tidak diketahui" karena "&"diasumsikan untuk memulai referensi entitas. Peramban sering kali pulih dengan aman dari jenis kesalahan ini, tetapi masalah nyata memang terjadi dalam beberapa kasus. Dalam contoh ini, banyak browser dengan benar mengonversi & copy = 3 ke © = 3, yang dapat menyebabkan tautan gagal. Karena ⟨adalah entitas HTML untuk kurung sudut kiri, beberapa browser juga mengubah & lang = en menjadi 〈= en. Dan satu browser lama bahkan menemukan entitas §, mengonversi & section = 2 menjadi §ion = 2.

Jadi tujuannya di sini adalah untuk menghindari masalah saat Anda mencoba memvalidasi situs web Anda. Jadi, Anda harus mengganti ampersand dengan &amp;saat menulis URL di markup Anda.

Perhatikan bahwa mengganti &dengan &amp; hanya dilakukan saat menulis URL dalam HTML, di mana "&"terdapat karakter khusus (bersama dengan "<" dan ">"). Saat menulis URL yang sama dalam pesan email teks biasa atau di bilah lokasi browser Anda, Anda akan menggunakan "&"dan tidak "&amp;". Dengan HTML, browser diterjemahkan "&amp;"menjadi "&"server Web hanya akan melihat "&" dan tidak "&amp;"dalam string kueri permintaan.

Semoga ini membantu : )

Jim
sumber
0

Itu contoh yang bagus. Saat &currentdiurai menjadi node teks, node tersebut akan diubah menjadi ¤t. Ketika diurai menjadi nilai atribut , itu diuraikan sebagai &current.

Jika Anda ingin &currentdi node teks, Anda harus menulis &amp;currentdi markup Anda.

Detail berdarah ada di sini: http://dev.w3.org/html5/spec/tokenization.html#consume-a-character-reference

Alohci
sumber
-2

jika Anda melakukan serangkaian karakter. membuat:

let linkGoogle = 'https://www.google.com/maps/dir/?api=1'; 
let origin = '&origin=' + locations[0][1] + ',' + locations[0][2];


aNav.href = linkGoogle + origin;
Urbanek Krzysztof
sumber
1
Pertanyaannya adalah tentang &ampHTML, bukan &URL.
Quentin