myoperam Проблеммс с JavaScript
ВНИМАНИЕ! ОСТЕРЕГАЙТЕСЬ МОШЕННИКОВ!
Помните, что все браузеры Opera АБСОЛЮТНО БЕСПЛАТНЫ.
Загружайте новые версии ТОЛЬКО С ОФИЦИАЛЬНОГО САЙТА или с ресурсов, которым ДОВЕРЯЕТЕ!


Предыдущее | Следующее | Архив форума | operaman.ru | Поиск
Проблеммс с JavaScript Pxx  12/06/05 09:16 PM

Все нижеуказанные глюки проверены в Операх 8.0, 8.5, 9

1. Глюк оперы
Code:
<script language="javascript" type="text/javascript">
function FLoad()
{
window.alert (maintable.width+"; "+maintable.height);
}
</script>
...
<body onLoad="FLoad()">
<table width="100%" height="500" border="0" cellpadding="0" cellspacing="0" ID=maintable>
...


В ИЕ выдается алерт: 100%; 500
В опере: 100%; Undefined
Получается, что опера знает табличное проперти width но не знает height


2. Глюк оперы
Code:
<script language="javascript" type="text/javascript">
function window.onload()
{
...
}
</script>


Такой код прекрасно работает в ИЕ, но полностью игнорируется оперой. Приходится делать так:
Code:
<script language="javascript" type="text/javascript">
function Fload()
{
...
}
</script>
...
<body onLoad="FLoad()">



2. Глюк ИЕ
Code:
document.body.clientHeight


Опера выдает значение 566, т.е. реальную высоту клиентской области
ИЕ выдает 1000, т.е. длину документа.

Как это все бороть/обходить?

Re: Проблеммс с JavaScript Kildor  12/07/05 03:52 AM

1 — не видя полностью документа, сказать не могу со 100% уверенностью, но в html strict таблица не имеет высоты.
Если тебе нужно реальную высоту таблицы, то пользуйся document.geElementById('maintable').offsetHeight
плюс, пользуйся DOM методами для нахождения элемента — document.getElementById
2 — опять же, пользуйся стандартными методами DOM
window.addHandler('load', function () {…})
или даже этой функцией — как наиболее кроссбраузерной
Code:
function addHandler(object, event, handler)
{
if (typeof object.addEventListener != 'undefined')
object.addEventListener(event, handler, false);
else if (typeof object.attachEvent != 'undefined')
object.attachEvent('on' + event, handler);
else
{
var handlersProp = '_handlerStack_' + event;
var eventProp = 'on' + event;
if (typeof object[handlersProp] == 'undefined')
{
object[handlersProp] = [];
if (typeof object[eventProp] != 'undefined')
object[handlersProp].push(object[eventProp]);
object[eventProp] = function(e)
{
var ret = true;
for (var i = 0; ret != false && i < object[handlersProp].length; i++)
ret = object[handlersProp][i](e);
return ret;
}
}
object[handlersProp].push(handler);
}
}
addHandler (window, 'load', function() {…}) // передавать именно event, без 'on'


2.2 — не в курсе.


Re: Проблеммс с JavaScript Pxx  12/07/05 03:37 PM

С хандлерами разобрался, а далее еще куча вопросов:
1. Что значит "в html strict таблица не имеет высоты"?
2. document.geElementById('maintable').offsetHeight выдает реальную высоту таблицы, а как теперь самому задать ее высоту?

А если в целом, то идея создать сплеш размерами, например 500х350, который бы вне зависимости от разрешения и размеров окна(если, конечно оно может его вместить) располагался ровно по центру. С горизонталью проблемм нет, а с вертикалью я уже замаялся. Поместил сплеш по центру в одноклеточную таблицу, которую хотел растягивать во всю клиентскую область.
TABLE height="100%" не работает.
Далее повесил обработчики на onLoad, onResize. Собирался получать размер клиентской области и устанавливать размеры таблицы под них. Но возникли вышеописанные проблеммы.

Может это как-то по-другому делается?
Хелп.

Re: Проблеммс с JavaScript Kildor  12/07/05 04:19 PM

а обязательно использовать таблицу на сплеш?
почему бы не обойтись дивами?
PS:
<div style='background:#aaf;text-align:center; vertical-align:middle; display:table; outline:1px solid invert; position:absolute; height: 350px; top:50%; margin-top:-175px; width:500px; left:50%; margin-left:-250px; '>Сплеш</div>


В ответ на:
Что значит "в html strict таблица не имеет высоты"?

Прочитай спецификации.



operaman.ru - Home


Rambler's Top100