imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 16.05.2005, 00:50     # 1
Neto
Newbie
 
Аватар для Neto
 
Регистрация: 17.06.2004
Сообщения: 38

Neto Путь к славе только начался
Проблемы с отладкой, помогите плиз

Здравствуйте!
Возникли проблемы с отладкой скрипта под разные браузеры.
Значит, есть галерея работ - ТУТ
При нажатии на превьюшку работы, с помощью скрипта по вызову Pop-up-окна, открывается новое Pop-up-окно, с увеличенной работой (рассмотрим код на примере первой превьюшки):

<a href="javascript:newWin=void(window.open('branding_work1.htm','brandin g_work1','width=1,height=1'))" >
<img src="img/branding_work1.jpg" width="68" height="68" border="0">


В коде странички Pop-up-окна у меня между тегами <head> </head>, прописан скрипт:

<SCRIPT language="Javascript">
function resize_win(x,y){
var winPosX=screen.width/2-x/2;
var winPosY=screen.height/2-y/2;
window.moveTo(winPosX, winPosY);
window.resizeTo(x+10,y+115);
}
</SCRIPT>


А картинка, с увеличенной работой вставляется с помощью следующего кода:

<img src="img/branding_work1_big.jpg" onload='resize_win(this.width,this.height);'>

Дело в том, что работы имеют разные размеры и было нужно, что бы Pop-up-окно "перестраивалось" под размеры картинки (ширина="ширине картинки", высота= "высота картинки"+"80 пикселей" (на стрелочки и описание)).

Вообщем, теперь о том, в чем заключаются собственно проблемы по отладке. Я детально изложила эти проблемы ТУТ (т.к. не хотела загромождать эту тему скриншотами и графикой).

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

Последний раз редактировалось Neto; 16.05.2005 в 01:21.
Neto вне форума  
Старый 16.05.2005, 07:23     # 2
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Ещё не учтено что IE6 с SP2 не позволяет убрать statusbar.

Сделай div с position: absolute. Здоровье дороже.
RaZEr вне форума  
Старый 16.05.2005, 09:32     # 3
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Neto
Несколько ответов, естественно не панацей:
1) Некоторые (я например всегда) запрещаю скриптам ресайзить окна браузера, поэтому это уже не есть здорово.
2) Размеры окон в Мозилла и ИЕ определяются поразному, это факт, с этим придется считаться, поэтому, если все-таки оставлять текущий вариант, то разные браузеры в скрипте учитывать придется явно.
3) (пункт 3.2 проблемы) Остановка анимации решается явным возвращением false при клике. Как сделано сейчас ИЕ останавливает анимацию, поскольку клик на ссылке предполагает переход по ней, и соответственно страница обычно эта будет покинута, и то что там используется void просто какбы осуществляет перехоуд "в никуда", поэтому его нужно явно отменить. Конкретное решение:
Заменить
Код:
<a href="javascript:newWin=void(window.open('branding_work1.htm','branding_work2','width=1,height=1,fullscreen=no,status=no,toolbar=no,menubar=no,resizable=no,scrollbars=no'))" onmouseover="show('im1',  'img/text_branding_work1-12.gif')" onmouseout="hide()">
Например на:
Код:
<a href=# onclick="newWin=window.open('branding_work1.htm','branding_work1','width=1,height=1'); return false;" onmouseover="show('im1',  'img/text_branding_work1-12.gif')" onmouseout="hide()">
А теперь общий совет - большинство проблем с размерами окон решить можно прописав параметры и размеры открытия окна в момент его открытия, тоесть напрямую в window.open() а не ресайзить их потом. Естественно это не исключает разных размеров для разных браузеров, но зато полностью рещает проблемы запрета ресайзинга окон и "вообще нераскрывшегося окна"

P.S. Мака нету к сожалению, поэтому сказать не могу ничего...
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 16.05.2005, 19:41     # 4
Neto
Newbie
 
Аватар для Neto
 
Регистрация: 17.06.2004
Сообщения: 38

Neto Путь к славе только начался
RaZEr, спасибо большое за советы!

Hubbitus, спасибо огромнадное за твой ответ!

По пункту 3.2 изменила код так, как ты посоветовал, и проблема отпала моментально! БИГ СЕНКС!

По поводу ресайзинга, тоже последовала твоему совету - прописала напрямую в window.open() размеры окна, протестировав увидела, что отпала проблема с открытием "свернутых" окон в Опере.
Так что тоже ГРОМАДНЫЙ СЕНКС!

Остались теперь у меня еще проблемы с разными размерами окон в разных браузерах и проблемы с отладкой под Макинтошем . Хотела спросить, может кто-то все же знает, как можно решить эти проблемы?

Последний раз редактировалось Neto; 16.05.2005 в 19:45.
Neto вне форума  
Старый 17.05.2005, 01:15     # 5
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Neto:
Остались теперь у меня еще проблемы с разными размерами окон в разных браузерах
....
Хотела спросить, может кто-то все же знает, как можно решить эти проблемы?
На ум пока приходит только банальное определение браузера в функции и открытие окна с размерами учитывающими поправку на браузер. Более красивого решения я не знаю к сожалению.

Про МАК я писал что помочь к сожалению ничем не смогу
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 17.05.2005, 03:29     # 6
Neto
Newbie
 
Аватар для Neto
 
Регистрация: 17.06.2004
Сообщения: 38

Neto Путь к славе только начался
Цитата:
Hubbitus:
На ум пока приходит только банальное определение браузера в функции и открытие окна с размерами учитывающими поправку на браузер. Более красивого решения я не знаю к сожалению.
Hubbitus, спасибо большое за совет! Вообще-то я аналогично так и предполагала, что нужно сделать, что бы при заходе посетителя на сайт, определялся скриптом его браузер и в зависимости от того, какой браузер выполнялся определенный код.
Я сама вообще не программер, но консультировалась по поводу скрипта, который бы мог определять браузер и в зависимости от браузера выполнять определенный код. Мне посоветовали скрипт такого типа (в скрипт работает так: если браузер = Мозилла Огненная лисица , то нужно выполнить код-1, иначе - код-2) (разумеется, что можно добавить индивидуальный код не только под Мозиллу, но и под большее кол-во браузеров, но для меня пока актуальным является именно 2 части кода - один код под Мозиллу, другой код под все остальные браузеры).
Этот скрипт имеет вообщем такой облик:

<Script Language='JavaScript'>
var code = navigator.appCodeName;
if ((name<>"Netscape") and (code<>"Mozilla"))
{код для мозилы}
else {код для других браузеров}
</Script>


Еще мне сказали, что перед каждой строкой кода, которая будет включаться в скобочки {код для мозилы} и {код для других браузеров} нужно дописать - document.write(', а в конце каждой строки - ');. Но когда я это все прописала, у меня вообще перестала отображаться визуально та часть кода, которую я запихнула в {} (я проверяла под IЕ, Лисой и Оперой - всюду результат аналогичен - вместо вывода скриптом нужного кода - белое полотно ).
ВОТ страничка, где я прописала этот скрипт.
(Код-1 и код-2 я пока одинаковый вставила, потом подправлю разумеется, главное что бы принцип скрипта работал)
Может кто-то подскажет почему скрипт не работает?

Р.S/ Никто не подскажет почему на этом форуме у меня не работает форматирование (при написании сообщения нельзя автоматически ни цвет сменить, ни жирность/наклон/подчеркивание, ни смайлики вставить, ни ссылку и т.п., я уже методом втыка вручную прописываю эти параметры, но это не удобно жутко... на других форумах у меня нормально всюду работает форматирование сообщений (браузером в основном пользуюсь MyIE2). Это у меня только такая беда или у других тоже? )

Последний раз редактировалось Neto; 17.05.2005 в 10:09.
Neto вне форума  
Старый 17.05.2005, 04:31     # 7
nibl
Junior Member
 
Аватар для nibl
 
Регистрация: 14.09.2003
Адрес: тут
Сообщения: 60

nibl Известность не заставит себя ждать
Синтаксическая ошибка (даже 2) -
Надо писать:
if ((code!="Netscape") and (code!="Mozilla"))
__________________
Часто истина ... зависит от твоей точки зрения. © Оби Ван Кеноби.

Последний раз редактировалось nibl; 17.05.2005 в 04:57.
nibl вне форума  
Старый 17.05.2005, 10:03     # 8
Neto
Newbie
 
Аватар для Neto
 
Регистрация: 17.06.2004
Сообщения: 38

Neto Путь к славе только начался
Цитата:
Сообщение от nibl
Синтаксическая ошибка (даже 2) -
Надо писать:
if ((code!="Netscape") and (code!="Mozilla"))
nibl, спасибо большое за совет, но эти 2 исправления в синтаксисе кода, проблемы к сожалению не решили (по прежнему вместо вывода на экран кода в зависимости от браузера, выводится только белое полотно)

Последний раз редактировалось Neto; 17.05.2005 в 10:19.
Neto вне форума  
Старый 17.05.2005, 10:25     # 9
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Neto, начнем с того что про нужность document.write('...') тебе в данном случае или неправильно сказали, или ты не правильно поняла.

Продолжим тем что у тебя в скрипте, на указанной странице уже есть определение браузера, когда устанавливается значение переменной roll, вполне можно было бы оттуда взять код, а вообще лучше было бы вообще структуру поменять чтобы определение происходило один раз.

Естественно все что у тебя есть я переделывать не буду сейчас, посему предлагаю такое решение:

Добавляешь вверху функцию:
Код:
function diff_window(what_open){
var ua = navigator.userAgent.toLowerCase();
isIE = ((ua.indexOf("msie") != -1) && (ua.indexOf("opera") == -1) && (ua.indexOf("webtv") == -1)); 
isGecko = (ua.indexOf("gecko") != -1);
//isSafari = (ua.indexOf("safari") != -1); //Это соответственно Маковский Сафари, если нужен
//isKonqueror = (ua.indexOf("konqueror") != -1); //Если нужно, то расскоментируешь эти 2 строки и учтешь их дальше

	if (isGecko){
	alert('У Вас должно быть Моззилла (FireFox) или Netscape');
	//Ниже идет пример открытия окна с параметрами, специфичными для браузера
	//При необходимости раскомментировать
	//newWin=window.open(what_open, 'window','width=400,height=300,fullscreen=no,status=no,toolbar=no,menubar=no,resizable=no,scrollbars=no');
	}
	else{
	alert ('Другой браузер');
	//Ниже идет пример открытия окна с параметрами, специфичными для браузера
	//При необходимости раскомментировать
	//newWin=window.open(what_open, 'window','width=300,height=200,fullscreen=no,status=no,toolbar=no,menubar=no,resizable=no,scrollbars=no');
	}
return false;
}
А окно теперь открываешь приблизительно так:
Код:
<a href=# onclick="newWin=window.open('branding_work1.htm')" onmouseover="show('im1',  'img/text_branding_work1-12.gif')" onmouseout="hide()">
Ну и естественно что параметры любые, опять же в этой функции diff_window их можно и рассчитать перед открытием, если нужно. Также можно учесть больше браузеров - смотри комментарии.

Ну и последнее, естественно это пример, все это можно записать в пару строчек удалив лишнее и комментарии.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 01:15.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.