Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Позиция экрана
 
 автор: DBFS   (17.10.2007 в 21:10)   письмо автору
 
 

Помогите пожалуйста. Не работает такая штука:

php-скрипт, в котором используется обработка посредством JavaScript:


........
<script language="JavaScript" type="text/javascript">
........
function gotolocationhref(brbr, brbr1) {

    
    if(navigator.appName == "Netscape"){
        var y = window.pageY;
        
    }
    
    window.location.href=brbr+brbr1+"&x=" + event.pageX + "&y=" + event.pageY;
}

.......
<?php
.......
?>
.......
<a onClick="gotolocationhref('<?echo$str;?>','<?echo$str1;?>')">Ссылка</a>
.......


Т.е. в администрате удаляется определенный топик. Данные находятся в Базе Данных, скрипт делает запрос на самого себя же, считывает данные методом GET, берет id топика, вобщем с выполнением php скрипта никаких проблем. Но, мне хотелось бы экран/окно позиционировать таким образом, чтобы после выполнения определенных действий (в данном случае после удаления топика) JavaScript считывал из командной строки значения Х и Y, введенные до запроса. А сами эти значения Х и Y - представляют из себя не что иное, как позицию экрана/окна, относительно левого верхнего угла документа. Проблема состоит в следующем: не могу считать Х и Y - параметры нахождения окна в момент клика. Таким образом, после совершенных действий позиция экрана "швыряен" нас в самый верх. Помогите пожалуйста найти ошибку.

   
 
 автор: sim5   (17.10.2007 в 21:45)   письмо автору
 
   для: DBFS   (17.10.2007 в 21:10)
 

О каком окне идет речь, об окне открытом методом window.open?

   
 
 автор: Dmitry Berkut   (17.10.2007 в 21:53)   письмо автору
 
   для: sim5   (17.10.2007 в 21:45)
 

Нет. Обычный php-скрипт. Мы имеем адресс и соответственно строку запроса:

str1="&idopinion=".$rowop["id_opinion"];
$str="${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}";

которые подаются в виде параметров в функцию JavaScript, и в этой функции необходимо считать X и Y - координаты местоположения окна/экрана относительно начала документа. Т.е. проблема чем то напоминает ситуацию с якорями, но якоря не подходят, требуется точная фиксация экрана и дальнейшее открытие этого же php-скрипта, тоесть переадресация на него же самого, с этими параметрами X и Y, для дальнейшего задания позиции экрана с помощью window.moveTo(X, Y).

   
 
 автор: Dmitry Berkut   (17.10.2007 в 22:02)   письмо автору
 
   для: Dmitry Berkut   (17.10.2007 в 21:53)
 

Т.е. для краткости изложения проблемы я выложил самое основное, и даже меньше)))!
Ссылка представляет собой передачу методом get в стоку состояния - id топика, который необходимо удалить. Происходит переадресация на этот же скрипт, удаляется из БД топик, и загружается эта же страница но уже без того, что мы, собсно, только что удалили. Вот. Но, необходимо, как я уже неоднократно)))) заявил установить позицию экрана на место, в котором экран находился до удаления.

   
 
 автор: sim5   (17.10.2007 в 22:10)   письмо автору
 
   для: Dmitry Berkut   (17.10.2007 в 22:02)
 

Окно не может быть относительно документа. Вы хотите чтобы позиция документа в окне не изменилась? Ну тогда примените в ссылке анкер. Если вы удалили ниже следующую запись, то передавайте на сервер имя анкера выше или ниже стоящей записи (как вам более подходит). "Плавного" не получится, но позиционироваться будет в нужной области документа.

   
 
 автор: Dmitry Berkut   (17.10.2007 в 22:14)   письмо автору
 
   для: sim5   (17.10.2007 в 22:10)
 

Я такой вариант в голове сразу представил: на счет передачи анкера снизу, но мне он не понравился, потому что при удалении сообщения экран все равно прыгает в верх или низ. Неужели невозможно посредствами JavaScript создать фиксацию, с помощью координат X и Y, фиксацию положения окна относительно документа???

   
 
 автор: sim5   (17.10.2007 в 22:22)   письмо автору
 
   для: Dmitry Berkut   (17.10.2007 в 22:14)
 

Почему, можно, учитывая скроллинг документа, получать по клику обект документа, вычислять его позицию и т.д. Потом с учетом этого производить скроллинг документа при загрузки... Зачем это? Ради того чтобы "красиво" остановиться в нужном месте?

   
 
 автор: Dmitry Berkut   (17.10.2007 в 22:29)   письмо автору
 
   для: sim5   (17.10.2007 в 22:22)
 

Да, пожалуйста, можете мне "напячятать" код, в котором я считываю координаты объекта. Сразу говорю, что такой вариант почему то не пашет:

x = window.event.srcElement.event.x;

потому как srcElement - возвращает элемент, с которого началось прохождение события!

   
 
 автор: Dmitry Berkut   (17.10.2007 в 22:24)   письмо автору
 
   для: sim5   (17.10.2007 в 22:10)
 

Т.е., смотрите, вся проблема состоит в том, (чтобы не углубляться), чтобы считать во время ивента(event), т.е., во время клика по ссылке (а таких ссылок челая колонка и очень высокая) в этот момент взять координату Y/X, которая является расстоянием от левого верхнего угла начала документа до верхнего левого угла экрана/позиции экрана в этот момент (кликание по ссылке). Вот вся проблема, которая меня сегодня настигла))))!!! Помогите плиз!

   
 
 автор: sim5   (17.10.2007 в 22:35)   письмо автору
 
   для: Dmitry Berkut   (17.10.2007 в 22:24)
 

Вы удаляете запись, например, щелчком по кнопке/сслыке, а вам надо определить положение области документа которая будет удалена. Значит надо получить объект в котором находится удаляемая область, потом ее координаты... А event даст вам координаты ссылки. Презагружайте страницу, указывайте анкер ниже стоящего...

   
 
 автор: Dmitry Berkut   (17.10.2007 в 22:52)   письмо автору
 
   для: sim5   (17.10.2007 в 22:35)
 

Нет, ну относительно анкеров, помоему все понятно. Я хотел бы решить проблему просредством приобретения с помощью JavaScript координаты x и/или y этого объекта/ссылки относительно начала документа, а там можно уже и с экраном разобраться, зная разрешение экрана пользователя это не составит особого труда. Ну так мне сможет кто-нибудь помочь написать код получения координаты Х этого объекта, собсно ссылки, по которой мы клачаем?

   
 
 автор: Dmitry Berkut   (18.10.2007 в 14:34)   письмо автору
 
   для: sim5   (17.10.2007 в 22:35)
 

Ребята, тут программисты сидят??? Или служба моральной поддержки?????

   
 
 автор: AlexSol   (18.10.2007 в 15:14)   письмо автору
 
   для: Dmitry Berkut   (18.10.2007 в 14:34)
 

используйте document.body.scrollTop для получения текущего значиния и его же для установки после удаления.

http://javascript.aho.ru/files/js/BODY.html#scrollLT

   
 
 автор: Dmitry Berkut   (18.10.2007 в 16:43)   письмо автору
 
   для: AlexSol   (18.10.2007 в 15:14)
 

Хорошо, большущее спасибки - помогло, причем работает и в Netscatpe и в IE. Но, может мне кто-нибудь подсказать как прописать вот такую вот байду для Netscatpe:

y=event.screenY;

Для того, чтобы снять координаты относительно объекта Screen, координаты элемента, по которому производим "клацание".???????

   
 
 автор: Dmitry Berkut   (18.10.2007 в 17:02)   письмо автору
 
   для: AlexSol   (18.10.2007 в 15:14)
 

А вобще, встречал кто-нибудь ресурс, на котором было бы что-то вроде таблицы, в которой было бы разграничение всевозможных свойств объектов для каждого из броузеров?????????
Все что мне пока удалось найти, это:

NN   eventObj
IE     window.event

   
 
 автор: Dmitry Berkut   (18.10.2007 в 17:17)   письмо автору
 
   для: Dmitry Berkut   (18.10.2007 в 17:02)
 

Все, я уже сам нашел:
http://javascript.aho.ru/files/js/event_model.html#fff
там очень клевая таблица:
Свойство/действие | NN4 | IE4+ | NN6 |

   
 
 автор: Dmitry Berkut   (18.10.2007 в 20:11)   письмо автору
 
   для: AlexSol   (18.10.2007 в 15:14)
 

Народ!!!! Меня постигла новая проблема. document.body.scrollTop - это конечно очень хорошо! Но, есть небольшое "но"!
Когда считывается значение Х и Y из командной строки, переданное методом GET, я вновь задаю document.body.scrollTop, но нифига не получается:


<?php
 
if((isset($_GET["yst"]))&&($_GET["xsl"]))
  {
  
$yst=$_GET["yst"];
  
$xsl=$_GET["xsl"];

 echo
"<script language='JavaScript' type='text/javascript'>";
 echo
"<!--";
 echo
"document.body.scrollTop=$yst;";
 echo
"document.body.scrollTop=$xsl;";
 echo
"//-->";
 echo
"</script>";

 }
 
?>

   
 
 автор: Dmitry Berkut   (18.10.2007 в 20:15)   письмо автору
 
   для: Dmitry Berkut   (18.10.2007 в 20:11)
 

Блин, не понимаю, почему оно не пашет. Я уже даже добавил функцию eval(), для преобразования строки в числовое значение:

<?php
 
if((isset($_GET["yst"]))&&($_GET["xsl"]))
  {
  
$yst=$_GET["yst"];
  
$xsl=$_GET["xsl"];

 echo
"<script language='JavaScript' type='text/javascript'>";
 echo
"<!--";
 echo
"document.body.scrollTop= eval(".$yst.");";
 echo
"document.body.scrollTop= eval(".$xsl.");";
 echo
"//-->";
 echo
"</script>";

 }
 
?>

   
 
 автор: Dmitry Berkut   (18.10.2007 в 20:22)   письмо автору
 
   для: Dmitry Berkut   (18.10.2007 в 20:15)
 

Народ!!! У кого "меткий" глаз-алмаз, гляньте, найдите ошибку, бо запарился уже - не устанавливается этот дурацкий document.body.scrollTop

   
 
 автор: Dmitry Berkut   (18.10.2007 в 20:31)   письмо автору
 
   для: Dmitry Berkut   (18.10.2007 в 20:22)
 

Гы-гы!!! Я сам себе помогу. Уже нашел ошибку:

echo"document.body.scrollTop= eval(".$yst.");";
 echo"document.body.scrollTop= eval(".$xsl.");"; 

Два раза задаю Top - первый раз нормально, второй раз задаю Top-у координату, котороя призначается для Left - echo"document.body.scrollLeft

   
 
 автор: Dmitry Berkut   (18.10.2007 в 20:44)   письмо автору
 
   для: Dmitry Berkut   (18.10.2007 в 20:31)
 

Ха-ха! Не работает оно зараза, нихрена. Ужа даже изменил вот так:

<?php
 
if(isset($_GET["yst"]))
  {
  
$yst=$_GET["yst"];

 echo
"<script language='JavaScript' type='text/javascript'>";
 echo
"<!--";
 echo
"document.body.scrollTop=98;";
 echo
"alert('document.body.scrollTop'+document.body.scrollTop);";
 echo
"//-->";
 echo
"</script>";

 }


document.body.scrollTop вобще не хочет задаваться!!!
Help!!!! Sos!!!!!

   
 
 автор: AlexSol   (18.10.2007 в 20:48)   письмо автору
 
   для: Dmitry Berkut   (18.10.2007 в 20:31)
 

вообщето такое дело надо на onload документа вешать.

   
 
 автор: Dmitry Berkut   (18.10.2007 в 21:03)   письмо автору
 
   для: AlexSol   (18.10.2007 в 20:48)
 

а можно код, просто за сегодняшний день уже голова вообще отказывается сображать, я понимаю, что это пустяки, но все же?

   
 
 автор: Dmitry Berkut   (18.10.2007 в 21:07)   письмо автору
 
   для: Dmitry Berkut   (18.10.2007 в 21:03)
 

Я еще побаиваюсь, что это связано с моим хостом. он бесплатный и в конце, после всей загрузки php-содержимого, перед тем, как window.status - покажет "готово", вверху справа появляется маленький баннер-рекламка. Может это она каким то образом влияет на задание скрола программным путем?

   
 
 автор: Dmitry Berkut   (18.10.2007 в 21:09)   письмо автору
 
   для: AlexSol   (18.10.2007 в 20:48)
 

Ой, Вы не поверите, - РАБОТАЕТ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!

<body background="images/bg103.gif" onLoad="javascript:document.body.scrollTop=50;">

теперь ОСТАЛОСЬ "вклинить" в этот onLoad условие, на php разумеется!

   
 
 автор: Dmitry Berkut   (18.10.2007 в 21:16)   письмо автору
 
   для: Dmitry Berkut   (18.10.2007 в 21:09)
 


<body background="images/bg103.gif" <?php if(isset($_GET["yst"])){ $yst=$_GET["yst"]; echo"onLoad='javascript:document.body.scrollTop=".$yst.";'";} ?> ">

   
 
 автор: Dmitry Berkut   (18.10.2007 в 21:18)   письмо автору
 
   для: Dmitry Berkut   (18.10.2007 в 21:16)
 

пашет, только как убрать вот этот вот момент? Когда оно только начинает загружаться, оно на мгновение все равно вверх тащится, потом уже до него "доходит" что необходимо опуститься, потому что в теге BODY задано значение при onLoad....

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования