IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   Проблемы с отладкой, помогите плиз (https://www.imho.ws/showthread.php?t=85729)

Neto 16.05.2005 00:50

Проблемы с отладкой, помогите плиз
 
Здравствуйте!
Возникли проблемы с отладкой скрипта под разные браузеры. :help:
Значит, есть галерея работ - ТУТ :ooh:
При нажатии на превьюшку работы, с помощью скрипта по вызову 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 пикселей" (на стрелочки и описание)).

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

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

RaZEr 16.05.2005 07:23

Ещё не учтено что IE6 с SP2 не позволяет убрать statusbar.

Сделай div с position: absolute. Здоровье дороже.

Hubbitus 16.05.2005 09:32

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. Мака нету к сожалению, поэтому сказать не могу ничего...

Neto 16.05.2005 19:41

RaZEr, спасибо большое за советы!

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

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

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

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

Hubbitus 17.05.2005 01:15

Цитата:

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

Про МАК я писал что помочь к сожалению ничем не смогу :(

Neto 17.05.2005 03:29

Цитата:

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

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


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

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

nibl 17.05.2005 04:31

Синтаксическая ошибка (даже 2) -
Надо писать:
if ((code!="Netscape") and (code!="Mozilla"))

Neto 17.05.2005 10:03

Цитата:

Сообщение от nibl
Синтаксическая ошибка (даже 2) -
Надо писать:
if ((code!="Netscape") and (code!="Mozilla"))

nibl, спасибо большое за совет, но эти 2 исправления в синтаксисе кода, проблемы к сожалению не решили (по прежнему вместо вывода на экран кода в зависимости от браузера, выводится только белое полотно) :(

Hubbitus 17.05.2005 10:25

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 их можно и рассчитать перед открытием, если нужно. Также можно учесть больше браузеров - смотри комментарии.

Ну и последнее, естественно это пример, все это можно записать в пару строчек удалив лишнее и комментарии.


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

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