-
Доброе время суток!
Есть небольшой скрипт:
Код:
var d = document;
var winIE = (navigator.userAgent.indexOf("Opera")==-1 && (d.getElementById && d.documentElement.behaviorUrns)) ? true : false;
function bodySize() {
if(winIE && d.documentElement.clientWidth) {
sObj = d.getElementsByTagName("body")[0].style;
sObj.width = (d.documentElement.clientWidth<1003) ? "1003px" : "100%"; }}
function init() {
if(winIE) {bodySize(); }}
onload = init;
if(winIE) {onresize = bodySize;}
Это эмулятор свойства "min-width" для "сами_знаете_какого_браузер а".
Очень полезная штука. Только вот есть одна неприятность – строка "onload = init;". Все прекрасно работает, если в <body> нет своего onload-а. Если же помимо этого скрипта есть <body onload=""> – скрипт говорит "до свидания". [Only registered and activated users can see links. Click Here To Register...]
Можно ли проверить в JS наличие атрибута onload у <body> и только если у него его нет – вызывать непосредственно в скрипте "onload = init;" ?
Нет, можно, конечно, из скрипта вообще убрать "onload = init;" и прописывать вызов этой функции в <body> в каждом документе. Но я не думаю, что это оптимальное решение (далеко не во всех документах на сайте требуется onload у <body>).
Заранее благодарю всех откликнувшихся.
-
эхх.. опять апаю старые топы.. но как говорица "лучше поздно..." )) учитывая что подобный вопрос появляется довольно часто.
проверить, назначен ли обработчик события, можно просто сравнив его с null (или c false). Т.е. в случае Aykroyd'a делаем так:
Код:
...
if(!window.onload) window.onload = init;
...
- назначаем инит в качестве обработчика, только если уже нету своего обработчика
развивая идею, можно сделать даже так:
Код:
...
old_handler = window.onload;
window.onload = function() {
*if(old_handler) old_handler();
*init();
}
...
- назначаем новый обработчик, который выполняет вначале старый, если таковой был назначен, а потом еще и инит
-
Спасибо, что откликнулись. [Only registered and activated users can see links. Click Here To Register...]
В свое время этот мой пост так и остался без внимания.
Но проблема уже давно себя исчерпала. Дело в том, что я сам здесь немного "перемудрил". Если у <body> есть onload, ничего не мешает просто продублировать в нем вызов "init" наряду с вызовом других функций...
-
а. я думал ты ищешь хитрые пути для того чтобы этого не делать ))) т.е. хочешь получить универсальный скрипт который можно будет просто включать в страницу например из внешнего файла не задумываясь что там у неё есть и ничего никуда не дописывая