Для чого використовується & amp


108

Чи є якась різниця у поведінці URL-адреси нижче.

Я не знаю, чому &вставляється, чи це має значення?

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

проти

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


1
Чи можете ви дати контекст? Це у формі дії? Щойно відображається на сторінці?
jprofitt

@ user470184 Я не голосував проти, але розглянув це. З цього питання вже є маса інформації щодо SO.
Charles Sprayberry

"Загальна поведінка" все ще досить розмита. Вам цікаво щось подібне <p>www.testurl.com/test?param1=test&amp;current=true</p>чи <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>
blue-sky

Відповіді:


126

& це HTML для "Початок посилання на символ".

&amp; - посилання на символ "Амперсанд".

&current; не є стандартним посиланням на символ, а також помилкою (браузери можуть спробувати виконати відновлення помилок, але ви не повинні залежати від цього).

Якщо ви використовували посилання на символ для реального символу (наприклад &trade;), тоді воно (™) відображатиметься в URL-адресі замість потрібного вам рядка.

(Зверніть увагу, що залежно від версії HTML, яку ви використовуєте, можливо, вам доведеться закінчити посилання на символ символом a ;, саме тому &trade=він буде розглядатися як ™. HTML 4 дозволяє його опустити, якщо наступний символ не є словом ( наприклад =), але деякі браузери (Hello Internet Explorer) мають проблеми з цим).



5

Моє джерело: http://htmlhelp.com/tools/validator/problems.html#amp

Ще одна поширена помилка виникає при включенні URL-адреси, яка містить амперсанд ("&"):

Це недійсне:

a href = "foo.cgi? chapter = 1 & section = 2 & copy = 3 & lang = uk"

Пояснення:

Цей приклад генерує помилку для "невідомого розділу сутності", оскільки "&"передбачається, що він починає посилання на сутність. Браузери часто безпечно відновлюються після такого роду помилок, але в деяких випадках справді виникають проблеми. У цьому прикладі багато браузерів правильно перетворюють & copy = 3 в © = 3, що може призвести до збою посилання. Оскільки ⟨є суттю HTML для лівої кутової дужки, деякі браузери також перетворюють & lang = en у 〈= en. А один старий браузер навіть знаходить сутність §, перетворюючи & section = 2 у §ion = 2.

Тож мета тут - уникнути проблем, коли ви намагаєтесь перевірити свій веб-сайт. Отже, вам слід замінити свої амперсанди на &amp;під час написання URL-адреси у вашій розмітці.

Зверніть увагу, що замінюючи &на &amp; робиться лише під час написання URL-адреси в HTML, де "&"є спеціальний символ (поряд із "<" та ">"). Коли ви пишете ту саму URL-адресу в текстовому повідомленні електронної пошти або в рядку розташування вашого браузера, ви б використовували "&"і ні "&amp;". За допомогою HTML браузер перекладає, "&amp;"щоб "&"веб-сервер бачив лише, "&" а не "&amp;"в рядку запиту запиту.

Сподіваюся, це допомагає :)


0

Це чудовий приклад. Коли &currentаналізується на текстовий вузол, він перетворюється на ¤t. При аналізі значення атрибута він аналізується як &current.

Якщо вам потрібен &currentтекстовий вузол, вам слід написати &amp;currentу своїй розмітці.

Деталі горі знаходяться тут: http://dev.w3.org/html5/spec/tokenization.html#consume-a-character-reference


-2

якщо ви робите рядок символів. зробити:

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


aNav.href = linkGoogle + origin;

1
Питання полягає &ampв HTML, а не &в URL-адресах.
Квентін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.