|
|
|
| вот мой код
var step4_w = (window.screenLeft + 200);
if (document.body.clientHeight >= 200) {
var step4_h = (window.screenTop + 500);
} else {
var step4_h = (document.body.clientHeight);
}
Agent.MoveTo(step4_w,step4_h);
|
и тут почемуто в любом случае срабатывает первый вариант, где я приплюсовую 500 пикселей от начала рабочей области | |
|
|
|
|
|
|
|
для: bogusua
(16.11.2007 в 12:15)
| | А вы перед IF (...) пропишите alert ((document.body.clientHeight >= 200)) и удостоверяйтесь каждый раз, что у вас получается значение true, а false никогда не получается.
Предположу, что ПЕРЕД выполнением этого условного оператора у вас выполняется какое-то действие по изменению геометрии окна браузера.
Если так, то вполне возможны глюки. Ибо любое действие по изменению геометрии требует ЗНАЧИТЕЛЬНОГО времени на выполнение, а последовательный JS-код выполняется значительно быстрее. Браузер просто не успевает изменить страницу после получения команды и геометрические значения выводятся совершенно дикие в этом случае.
Например, для IE версий до 6.0 был возможен код, определяющий тип ONUNLOAD'a - при нажатии на крестик именно clientHeight "вылетал" аж в миллионы пикселей. Поэтому именно закрытие окна можно было отследить (а переход по ссылке или вызов другой страницы из "Избранного" уже различить между собой было нельзя).
Поэтому в этом случае (да и в любом ином, когда не только меняются размеры, но и проводится любое run-time действие - например, добавление нового элемента на страницу), необходимо "притормозить" выполнение скрипта.
Обычно это делается так:
1. код разбивается на куски - границей куска является именно run-time действие
2. вызов следующего куска кода осуществляется через setTimeout - и можно даже с нулевым временем.
Т.е. в вашем случае будет так:
var step4_w = (window.screenLeft + 200);
setTimeout (myFunc, 0);
function mfunc ()
{
if (document.body.clientHeight >= 200) {
var step4_h = (window.screenTop + 500);
} else {
var step4_h = (document.body.clientHeight);
}
Agent.MoveTo(step4_w,step4_h);
...
}
| разумеется, следите за переменными - или чтобы они были глобальными, или же передавайте их в качестве аргументов функций. | |
|
|
|