Для чего & amp используется

110

Есть ли разница в поведении указанного ниже URL.

Я не знаю, зачем &вставлен, какая разница?

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

против

www.testurl.com/test?param1=test&current=true
голубое небо
источник
1
По теме: Мне действительно нужно кодировать как amp?
Чарльз Спрейберри
1
Вы можете дать контекст? Это в форме действия? Просто отображается на странице?
jprofitt
@ user470184 Я не голосовал против, но учел. По этой проблеме уже есть тонна информации по SO.
Чарльз Спрейберри,
«Общее поведение» все еще довольно расплывчато. Вам интересно что-то вроде <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

Ответы:

127

& HTML для «Начало ссылки на символ».

&amp; это ссылка на символ для "амперсанда".

&current; не является стандартной символьной ссылкой и поэтому является ошибкой (браузеры могут попытаться выполнить восстановление после ошибки, но вы не должны зависеть от этого).

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

(Обратите внимание, что в зависимости от версии HTML, которую вы используете, вам, возможно, придется заканчивать ссылку на символ ;, поэтому &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 = en"

Пояснение:

В этом примере возникает ошибка для «раздела неизвестной сущности», поскольку "&"предполагается, что с нее начинается ссылка на сущность. Браузеры часто безопасно восстанавливаются после такого рода ошибок, но в некоторых случаях действительно возникают проблемы. В этом примере многие браузеры правильно конвертируют & copy = 3 в © = 3, что может привести к сбою ссылки. Поскольку ⟨- это HTML-объект для левой угловой скобки, некоторые браузеры также преобразуют & lang = en в 〈= en. И один старый браузер даже находит объект §, преобразовывая & section = 2 в §ion = 2.

Итак, цель здесь - избежать проблем, когда вы пытаетесь проверить свой сайт. Таким образом, вы должны заменить свои амперсанды на &amp;при написании URL-адреса в разметке.

Обратите внимание, что замена &на &amp; выполняется только при написании URL-адреса в HTML, где "&"используется специальный символ (вместе с «<» и «>»). При написании того же URL-адреса в текстовом сообщении электронной почты или в адресной строке браузера вы должны использовать"&" and not "&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.
Квентин