& Amp được sử dụng để làm gì


107

Có bất kỳ sự khác biệt nào trong hành vi của URL bên dưới.

Tôi không biết tại sao cái &được chèn vào, nó có tạo ra sự khác biệt nào không?

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

đấu với

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


1
Bạn có thể đưa ra một bối cảnh? Đây có phải là một hành động biểu mẫu không? Chỉ hiển thị trên một trang?
jprofitt

@ user470184 Tôi không phản đối nhưng đã xem xét nó. Có rất nhiều thông tin trên SO liên quan đến vấn đề này.
Charles Sprayberry,

"Hành vi chung" vẫn còn khá mơ hồ. Bạn đang tự hỏi về một cái gì đó như <p>www.testurl.com/test?param1=test&amp;current=true</p>hoặc <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

Câu trả lời:


126

& là HTML cho "Bắt đầu tham chiếu ký tự".

&amp; là tham chiếu ký tự cho "Dấu và".

&current; không phải là tham chiếu ký tự tiêu chuẩn và do đó xảy ra lỗi (các trình duyệt có thể cố gắng thực hiện khôi phục lỗi nhưng bạn không nên phụ thuộc vào điều này).

Nếu bạn đã sử dụng tham chiếu ký tự cho một ký tự thực (ví dụ &trade;) thì nó (™) sẽ xuất hiện trong URL thay vì chuỗi bạn muốn.

(Lưu ý rằng tùy thuộc vào phiên bản HTML mà bạn sử dụng, bạn có thể phải kết thúc tham chiếu ký tự bằng a ;, đó là lý do tại sao &trade=sẽ được coi là ™. HTML 4 cho phép nó không giới hạn nếu ký tự tiếp theo là ký tự không phải từ ( chẳng hạn như =) nhưng một số trình duyệt (Hello Internet Explorer) có vấn đề với điều này).



5

Nguồn của tôi: http://htmlhelp.com/tools/validator/problems.html#amp

Một lỗi phổ biến khác xảy ra khi bao gồm một URL có chứa ký hiệu và ("&"):

Điều này không hợp lệ:

a href = "foo.cgi? chap = 1 & section = 2 & copy = 3 & lang = en"

Giải trình:

Ví dụ này tạo ra lỗi cho "phần thực thể không xác định" vì phần "&"này được giả định là bắt đầu một tham chiếu thực thể. Các trình duyệt thường khôi phục một cách an toàn khỏi loại lỗi này, nhưng các vấn đề thực sự vẫn xảy ra trong một số trường hợp. Trong ví dụ này, nhiều trình duyệt chuyển đổi chính xác & copy = 3 thành © = 3, điều này có thể khiến liên kết bị lỗi. Vì ⟨là thực thể HTML cho dấu ngoặc nhọn bên trái, một số trình duyệt cũng chuyển đổi & lang = en thành 〈= en. Và một trình duyệt cũ thậm chí còn tìm thấy thực thể §, chuyển đổi & section = 2 thành §ion = 2.

Vì vậy, mục tiêu ở đây là để tránh các vấn đề khi bạn đang cố gắng xác thực trang web của mình. Vì vậy, bạn nên thay thế dấu và bằng &amp;khi viết URL trong đánh dấu của mình.

Lưu ý rằng thay thế &bằng &amp; chỉ được thực hiện khi viết URL trong HTML, trong đó "&"là một ký tự đặc biệt (cùng với "<" và ">"). Khi viết cùng một URL trong một email văn bản thuần túy hoặc trong thanh vị trí của trình duyệt, bạn sẽ sử dụng "&"và không "&amp;". Với HTML, trình duyệt dịch "&amp;"sang "&"để máy chủ Web sẽ chỉ nhìn thấy "&" và không có "&amp;"trong chuỗi truy vấn của yêu cầu.

Hi vọng điêu nay co ich : )


0

Đó là một ví dụ tuyệt vời. Khi &currentđược phân tích cú pháp thành một nút văn bản, nó sẽ được chuyển đổi thành ¤t. Khi được phân tích cú pháp thành một giá trị thuộc tính , nó được phân tích cú pháp thành &current.

Nếu bạn muốn &currenttrong một nút văn bản, bạn nên viết &amp;currentvào phần đánh dấu của mình.

Chi tiết đẫm máu có tại đây: http://dev.w3.org/html5/spec/tokenization.html#consume-a-character-reference


-2

nếu bạn đang thực hiện một chuỗi ký tự. làm:

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


aNav.href = linkGoogle + origin;

1
Câu hỏi là về &ampHTML, không phải &về URL.
Quentin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.