2013-02-07 22 views
8

Dường như nếu URL chứa văn bản &not được sử dụng như một phần của thuộc tính trường, nhiều trình duyệt sẽ hiểu điều này là '¬'. Vì vậy, mã HTML này:Trình duyệt giải thích '& không' trong URL

<a href="#" onclick="window.location='http://www.example.com?some_param=1&notify=true';">Click here</a> 

sẽ được render thành:

<a href="#" onclick="window.location='http://www.example.com?some_param=1¬ify=true';">Click here</a> 

Tôi tìm thấy một vài lựa chọn thay thế bằng cách thay &not với &%6Eot, hoặc bằng cách đăng một hình thức thay vì nhận được một địa chỉ URL tham số. Nhưng POST không phải lúc nào cũng là lựa chọn thay thế và thay thế được thừa nhận là hack - nó cũng sẽ cần phải xử lý các mã phổ biến khác là &cent, &curren, &pound, &sect, &copy, &reg ... (danh sách được lấy từ here).

Chắc chắn có ai đó ở đó có giải pháp tốt hơn cho điều này?

Trả lời

11

Thuộc tính yếu tố được diễn giải bởi trình phân tích cú pháp HTML, vì vậy bạn phải thoát & ký tự là &amp;. Nó hoạt động hầu hết thời gian ngay cả khi bạn không, nhưng trong một số trường hợp (như của bạn) bạn phải làm điều đó "đúng" hoặc nó sẽ không hoạt động.

+0

Cảm ơn, không thể tin rằng tôi đã quên điều này! – PinnyM

+0

Tôi luôn quên điều này. Tôi không chắc liệu tôi có vui hay buồn vì nó thường hoạt động, bởi vì nó chắc chắn dễ quên hơn theo cách này! – amalloy