2009-09-23 5 views
2

Я использовал prototype.js в веб-приложении. Я населяю некоторые Divs динамически, выбирая некоторые переключатели. Перед тем как заселение содержания в Div, я клиринговый предыдущее содержимое с помощью метода обновления прототипа, как -& nbsp без точки с запятой

$('item').update(''); 

В IE, это автоматически, но не помещает разрыв строки в Firefox 3.5. Таким образом, чтобы работать так же, как IE, я изменил код как -

$('item').update('&nbsp'); 

Теперь это сработало для меня, как ожидалось. Но, как правило, «& nbsp» используется с точкой с запятой ($ nbsp;). Я хочу знать, если может произойти сбой этого кода. Например, есть ли шансы, когда & nbsp будет отображаться вместо пробела? Но некоторые браузеры могут быть достаточно умными, чтобы обнаружить ошибку кодирования программистом и автокорректировать его.

+4

Почему вы не хотите использовать точку с запятой? – pavium

ответ

7

НИКОГДА не полагайтесь на автокоррекцию браузера или «рекомендуемое» поведение.

Если ваш код неверен, то (а) это неправильно и (б) браузеры могут делать с ним несовместимые вещи.

+0

Если это неправильно, он должен где-то сломаться. – 2009-09-23 11:47:06

+0

См. Цитату Gumbo, это не автокоррекция, а определенное поведение для SGML. Но тогда вы полагаетесь на браузеры, правильно реализующие спецификацию, которая является бесполезной вещью, чтобы надеяться в целом :-) – Joey

+3

@Saurabh: Когда вы можете предсказать * все * будущие реализации браузера, вы увидите, где именно он сломается. Пока вы не сможете предвидеть * все * будущие браузеры, вы должны предположить, что неправильно это неправильно и в конечном итоге сломается и вызовет проблемы, которые вы не ожидали. Ваши тестовые примеры (IE и FireFox) даже не охватывают * все * текущие версии браузера. Не надейтесь, что что-то не так. Просто исправьте их. –

10

Конечная точка с запятой может быть пропущена, но это абсолютно не рекомендуется. См. Это note in the HTML 4 specification regarding character references:

В SGML можно устранить окончательный «;» после символьной ссылки в некоторых случаях (например, при разрыве строки или непосредственно перед тегом). В других обстоятельствах он не может быть устранен (например, посередине слова). Мы настоятельно рекомендуем использовать «;» во всех случаях, чтобы избежать проблем с пользовательскими агентами, которые требуют присутствия этого символа.

0

Я согласен, Угроза разметки и ошибки JavaScript являются катастрофой для отладки любых проблем, которые у вас есть в будущем, поскольку вы не можете устранить изворотливую разметку, заставляя браузер неправильно интерпретировать код.

0

не уверены, если это поможет (или изменить что-нибудь), но правильный синтаксис фактически без одинарных кавычек:

$('element').update(); 
Смежные вопросы