Уточнение поста Яджры ... Мне нравится эта мысль, но я ненавижу идею обнаружения браузера.
Я предпочитаю ppk использовать обнаружение объектов вместо обнаружения в браузере,
(http://www.quirksmode.org/js/support.html),
потому что тогда вы на самом деле тестируете возможности браузера и действуете соответственно, а не тому, на что, на ваш взгляд, способен браузер в то время. Кроме того, не требуется так много разборов паролей идентификатора браузера и не исключаются браузеры с отличными возможностями, о которых вы ничего не знаете.
Итак, вместо того, чтобы смотреть на navigator.AppName, почему бы не сделать что-то подобное, фактически проверяя используемые вами элементы? (Вы можете использовать блоки try {}, если хотите стать еще интереснее, но у меня это получилось.)
function reload_message_frame() {
var frame_id = 'live_message_frame';
if(window.document.getElementById(frame_id).location ) {
window.document.getElementById(frame_id).location.reload(true);
} else if (window.document.getElementById(frame_id).contentWindow.location ) {
window.document.getElementById(frame_id).contentWindow.location.reload(true);
} else if (window.document.getElementById(frame_id).src){
window.document.getElementById(frame_id).src = window.document.getElementById(frame_id).src;
} else {
// fail condition, respond as appropriate, or do nothing
alert("Sorry, unable to reload that frame!");
}
}
Таким образом, вы можете попробовать столько разных перестановок, сколько вам нужно или необходимо, не вызывая ошибок javascript, и сделать что-то разумное, если ничего не помогает. Это немного больше работы для проверки ваших объектов перед их использованием, но, IMO, делает для лучшего и более отказоустойчивого кода.
Работал для меня в IE8, Firefox (15.0.1), Chrome (21.0.1180.89 m) и Opera (12.0.2) в Windows.
Может быть, я мог бы сделать еще лучше, фактически протестировав функцию перезагрузки, но мне этого сейчас достаточно. :)