![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| TetraHC |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 8.6.2009 Репутация: нет Всего: нет |
Всем добрый день! Пишу сайтик http://cabel.skrovla.ru
Одним из условия заказчика, было реализовать строку подсказки поиска - введите например букву "а" (русскую) в поле поиска кабеля, и вылезет подсказка. Собсвенно элемент позиционирован как: position:absolute Так вот дело в том, что в зависимости от экрана браузера координаты поля ввода меняются. Из можно определить ТОЛЬКО через JAVASCRIPT, что я с успехом делаю. Но вот далее, надо вывести css файл с этими координатами (я делаю это на php), и вот тут вопрос - как передать значения left и top в php? Вариант через GET не прокатит, так как адреса у страницы php нет - это МОДУЛЬ JOOMLA. Вопрос - как быть? Код:
Примечание - строка "<script language="JavaScript" type="text/javascript" src="./suggest/clienthint.js"></script>" отношения к делу не имеет, это javascript для передачи данных технологией AJAX Собсвтенно на JAVA мы определяем postion left и top, и надо их вставить вместо текущий фиксированных позиций ( 719px, 316px для обычного юзера и 719px и 546px для менеджера). PS Есть вариант отказатся от php и сделать вывод только методом JAVSACSRIPT (documet.write), но я так и смог заставить document.write выводить html код в тело страницы (хотел делать вставки кода типа <input name="name" value="width" type=hidden> |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
Я думаю Вы копаете не в ту сторону. Зачем PHP что-то знать о координатах? Мухи отдельно, котлеты отдельно - помните?
Делайте при загрузке страницы автоформатирование на JS. |
|||
|
||||
| TetraHC |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 8.6.2009 Репутация: нет Всего: нет |
А как мне тогда средствами JS вывести в тело html следующие строки:
, где X и Y - координаты элемента <input id="txt4" ...> ? Это сообщение отредактировал(а) Aliance - 9.6.2009, 12:59 |
||||
|
|||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
Я показал как статично задать координаты. Тебе же нужно не статично, а динамически, прочитав их из соотв. координат нужного тебе элемента ( т.е. input с id='txt4' ). Как это сделать - ответит тебе поиск по форуму, просмотр прикрепленных тем и FAQа |
|||
|
||||
| TetraHC |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 8.6.2009 Репутация: нет Всего: нет |
Погоди, но ведь элемент c id="txt4' появится уже после выполение JS? Как же я узнаю при загрузки страницы положение того элемента, которого нет? Кстати, спасибо за ответы и попытку мне помочь. Ты первый (!) кто это сделал на 3 форумах! |
||||
|
|||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
window.onload - событие, которое выполнится только после полной загрузки документа вместе со всем его содержимым (подробнее о событиях - по ссылке у меня в подписи). После этого мы будем уже знать о существовании элемента с id равным txt4.
|
|||
|
||||
| TetraHC |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 8.6.2009 Репутация: нет Всего: нет |
Итак, я продолжаю ковырять свою задачу. Немного разобрался с кодом, понял что такое window.onload. Пока, для отладки скрипта, не вешаю его на window.onload - как получу 100% рабочий вариант, то повешу.
Итак имеем код:
Итак, что мы имеем с "Гуся" 1) Скрипт работает в FireFox, Opera. Но только не в IE - там он определяет координаты как 0 2) В IE не работает команда
Помогите одолеть эту Майкрософтовую гадину! Пример работы скрипта с определением координат тут - http://cabel.skrovla.ru |
||||
|
|||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
Возможно это именно от того что ты не сделал как я говорил - не повесил скрипт в window.onload и IE не видит еще этого элемента. Это лечится нулевым setTimeout.
Еще проблема может быть в том, что для того чтобы прочитать какое-то свойство из elem.style.*, нужно чтобы оно было явно объхявлено для элемента (через стили, например). |
|||
|
||||
| TetraHC |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 8.6.2009 Репутация: нет Всего: нет |
C windows.onload работа скрипта не связана никак - в теле html скрипт 100% выполняется после этого элемента. Фишка в том, что не срабатывает (именно в IE) функция getElementPosition - возращает нули на выходе. В других браузерах все ОК |
|||
|
||||
| Astraller |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 1.8.2007 Где: $Украина[Кры м]->Феодосия Репутация: 1 Всего: 5 |
Фишка в том что этой функцией пользуется пол интернета, включая меня лично, и она вполне адекватно работает во всех актуальных браузерах. А теперь скажите какой версии у вас IE. -------------------- A.S.T.R.A.L.L.E.R.: Artificial Synthetic Technician Responsible for Assassination, Logical Learning and Efficient Repair |
|||
|
||||
| TetraHC |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 8.6.2009 Репутация: нет Всего: нет |
7.0.5730.13 точная версия
Значит, функция рабочая? Хм. Очень интересно.... |
|||
|
||||
| Astraller |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 1.8.2007 Где: $Украина[Кры м]->Феодосия Репутация: 1 Всего: 5 |
В 7 версии работает точно, за 5 я бы не поручился, но начиная с 6....
-------------------- A.S.T.R.A.L.L.E.R.: Artificial Synthetic Technician Responsible for Assassination, Logical Learning and Efficient Repair |
|||
|
||||
| TetraHC |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 8.6.2009 Репутация: нет Всего: нет |
Ну тогда говоря русским языком "мой косяк". Но глаз уже так замылен на сайте, что не понимаю где...Я вроде 3 функции разные там проверил ( GETBOUNDS, в инете тоже есть) - т.е. где то косяк вне :( |
|||
|
||||
| Astraller |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 1.8.2007 Где: $Украина[Кры м]->Феодосия Репутация: 1 Всего: 5 |
Вы бы выложили в сеть примерчик какой-нить мы бы посмотрели и помогли если что -------------------- A.S.T.R.A.L.L.E.R.: Artificial Synthetic Technician Responsible for Assassination, Logical Learning and Efficient Repair |
|||
|
||||
| TetraHC |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 8.6.2009 Репутация: нет Всего: нет |
Листинг примера:
|
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
getElementPosition возвращает объект, а не массив, и обращаться к нему стоит так: переменная_объекта.свойство
|
|||
|
||||
| Astraller |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 1.8.2007 Где: $Украина[Кры м]->Феодосия Репутация: 1 Всего: 5 |
Результат работы вашего скрипта:
FireFox3: x0 404px y0 52px.Слева 405px Сверху 28px Высота 24px Ширина 266px IE8: x0 394px y0 59px.Слева 395px Сверху 35px Высота 24px Ширина 266px IE6: x0 467px y0 56px.Слева 468px Сверху 33px Высота 24px Ширина 266px -------------------- A.S.T.R.A.L.L.E.R.: Artificial Synthetic Technician Responsible for Assassination, Logical Learning and Efficient Repair |
|||
|
||||
| TetraHC |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 8.6.2009 Репутация: нет Всего: нет |
Что за фигня
IE 7: x0 -1px y0 0px.Слева 0px Сверху 0px Высота 0px Ширина -2px Alliance, попробую. Значит, скрипт рушится только в окружении всего html И, как всегда, спасибо за ответы! Продолжу ковырять! |
|||
|
||||
| Astraller |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 1.8.2007 Где: $Украина[Кры м]->Феодосия Репутация: 1 Всего: 5 |
IE8: x0 835px y0 294px.Слева 836px Сверху 272px Высота 22px Ширина 273px P.S. Cоряйте, до IE6 долго идти, он на работе Это сообщение отредактировал(а) Astraller - 16.6.2009, 10:55 -------------------- A.S.T.R.A.L.L.E.R.: Artificial Synthetic Technician Responsible for Assassination, Logical Learning and Efficient Repair |
|||
|
||||
| TetraHC |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 8.6.2009 Репутация: нет Всего: нет |
Проверил и я, очистив Куки и Кэш. На версии 7.0.5730.11 таже петрушка:
x0 -1px y0 0px.Слева 0px Сверху 0px Высота 0px Ширина -2px Сейчас ставлю 8.0 |
|||
|
||||
| Astraller |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 1.8.2007 Где: $Украина[Кры м]->Феодосия Репутация: 1 Всего: 5 |
То-то я думал - зачем М$ с такой поспешностью отплевался IE7-IE8, это потому что даже в семье генетических уродов (IE*) может родится архиурод - IE7
-------------------- A.S.T.R.A.L.L.E.R.: Artificial Synthetic Technician Responsible for Assassination, Logical Learning and Efficient Repair |
|||
|
||||
| Soah |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 18.2.2009 Репутация: 13 Всего: 54 |
http://dklab.ru/chicken/nablas/38.html
|
||||||
|
|||||||
| TetraHC |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 8.6.2009 Репутация: нет Всего: нет |
Мда, у меня отпад мозгов
IE 8.0 Работа скрипта: x0 841px y0 294px.Слева 842px Сверху 272px Высота 22px Ширина 273px Давить мелкософт надо за такое! |
|||
|
||||
| TetraHC |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 8.6.2009 Репутация: нет Всего: нет |
Так, ну вроде я все сделал С ВАШЕЙ ВЕЛИКОЙ ПОМОЩЬЮ! СПАСИБО ВСЕМ А теперь вопрос знатокам (я подвесил на событие window.onload) - можно ли обновление сделать чаще? А то я взял товар в корзину, сайт раздивнулся, а строчка поправиться только по событию (клик там ) или еще что
|
|||
|
||||
| Astraller |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 1.8.2007 Где: $Украина[Кры м]->Феодосия Репутация: 1 Всего: 5 |
1) А при добавлении в корзину почему не править все что нужно? 2) можно по setInterval'у проверять, но ИМХО - это заплатка. 3) Корзину можно сверстать так что-бы она не раздвигала диз сайта, ибо это тоже не хорошо. -------------------- A.S.T.R.A.L.L.E.R.: Artificial Synthetic Technician Responsible for Assassination, Logical Learning and Efficient Repair |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
Есть событие window.onresize, но я бы действительно лучше сверстал ее так, чтобы ничего не раздвигалось.
|
|||
|
||||
| TetraHC |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 8.6.2009 Репутация: нет Всего: нет |
PS Еще раз огромное спасибо Мужики, без вас и без направки Soah в личке даже бы и не подумал IE проверить на другую версию...Astraller, Alliance - тоже спасибо!
Последний вопрос, так сказать, на "вкусное" - как задать размер таблицы в пикселях? Скажу сразу, ответ <table width="600px" ...> не прокатывает если есть вложенная таблица! |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
Модератор: Пожалуйста, один топик - один вопрос.
TetraHC, с этим вопросом обратитесь в раздел Верстки. |
|||
|
||||
| TetraHC |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 8.6.2009 Репутация: нет Всего: нет |
Все, тогда спасибо, тему можно закрыть!
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |