Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Вопрос по JavaScript

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Создание веб-сайтов
Предыдущая тема :: Следующая тема  
Автор Сообщение
Mn_Specter



Зарегистрирован: 07.02.2008
Сообщения: 2

СообщениеДобавлено: Чт Фев 07 2008 18:36    Заголовок сообщения: Вопрос по JavaScript Ответить с цитатой

Господа, возникла коя-какая проблема.
Вообщем ситуация такая: На сайте есть фотогалерея. Картинки в ней открываются хитрым образом без полной перезагрузки страницы. Выглядит примерно так:
Цитата:
<div id="foto" style="width: 500px; height: 500px; background: url('.$this->foto['foto'].') center no-repeat;">
С помощью JavaScript меняется параметр ...style.background = '...' соответственно для каждой вновь открываемой картинки. То есть картинка отображается как фон, заданный в style тэга <div>.
Проблема в том, что во всех браузерах все нормально, а в Опере возникает следующий косяк - например, у нас сейчас отображается горизонтальная картинка 500х200, а после нее мы загружаем вертикальную картинку 200х500. Так вот новый фон (в нашем случае - фото из галереи) почему-то обрежется по высоте предыдущей (то есть отобразится только 200х200, а по 150 пикселей снизу и сверху отрежутся). Причем при повторном нажатии на на ссылку отображения новой картинки появится и ее остальная часть. Кроме того, при повторном переходе с первой картинки на вторую все сразу отображается нормально (то есть размер второй картинки уже прокешировался и она сразу выводится в полном размере).
Я понимаю, что это уже скорее косяк Оперы, а не скрипта. Вообщем вопрос такой: можно ли этот глюк как-то обойти - например, сделать чтобы для Оперы нажатие на ссылку отображения фотки делалось принудительно двойным (то есть тыкаешь 1 раз, а нажимается как бы 2) - ведь при повторном нажатии на ссылку отрезанная часть догружается. Или еще как-то обмануть Оперу. Я просто в JavaScript не силен (больше по части PHP), а менять полностью структуру вполне рабочей галереи из-за глюков Оперы как-то не хочется...[/b]
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mytilus Galloprovincialis



Зарегистрирован: 30.08.2005
Сообщения: 358
Откуда: откуда все люди родятся

СообщениеДобавлено: Сб Фев 09 2008 23:17    Заголовок сообщения: Ответить с цитатой

А если после обновления фона изменить размеры DIV'а (допустим, на 1px) и сразу же вернуть к прежнему размеру?

Можно еще попробывать изменить значение аргумента style на width: 500px; height: 500px; background: transparent url('.$this->foto['foto'].') center no-repeat.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mn_Specter



Зарегистрирован: 07.02.2008
Сообщения: 2

СообщениеДобавлено: Вс Фев 10 2008 13:31    Заголовок сообщения: Ответить с цитатой

Спасибо за совет. Проблема уже решилась. Если в двух словах, то нужно было менять не style внутри div-а, а сам div. Опера только так понимает Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
kostuha



Зарегистрирован: 19.03.2008
Сообщения: 3

СообщениеДобавлено: Чт Мар 20 2008 22:50    Заголовок сообщения: Ответить с цитатой

У меня тоже есть вопросик по js.
Как назначить странице самый верхний слой (уровень z-index), что бы рекламный баннер поверх не вставал?
Может как то баннеру присвоить visible = 0 ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mytilus Galloprovincialis



Зарегистрирован: 30.08.2005
Сообщения: 358
Откуда: откуда все люди родятся

СообщениеДобавлено: Чт Мар 20 2008 23:09    Заголовок сообщения: Ответить с цитатой

Страницу поверх баннера отобразить нельзя, но баннер можно перекрыть другим элементом, указав ему (элементу) значение style=position:absolute. Если у баннера тоже абсолютное позиционирование, то перекрывающий элемент должен содержать в свойстве style значение z-index большее, нежели у баннера.
Баннер можно скрыть, указав style=visibility:hidden или style=display:none. В первом случае баннер станет прозрачным, но место под него будет сохранено в разметке страницы. Во втором - баннер, по сути, отсутствует, и место под него не резервируется.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
kostuha



Зарегистрирован: 19.03.2008
Сообщения: 3

СообщениеДобавлено: Пт Мар 21 2008 10:44    Заголовок сообщения: Ответить с цитатой

код баннера такой:

// <script language="javascript">
on=mw=null;
fl=ofl=0;
mc=me=0;
t=0;
b=0;
ch=bt=bn=0;
wn=wt=null;
sl=0;
t2=0;
function Is6EB38C6A()
{
this.n=(document.layers)?true:false;
this.o=(navigator.userAgent.indexOf('Opera')!=-1)?true:false;
this.i=(document.all&&(!this.o))?true:false;
this.d=(document.getElementById)?true:false;
}
var is6EB38C6A=new Is6EB38C6A();
function Stor()
{
if(is6EB38C6A.n&&(top.frames.length>0)){
return top.frames[0];
}
else{
if (document.location.search.substring(0,6)=="?Time=") return self;
return top;
}

}
var st=Stor();
if(isNaN(st.sl)) st.sl=1; else st.sl++;
function ge6EB38C6A()
{
var cl;
if(is6EB38C6A.n){
cl=document.layers[ge6EB38C6A.arguments[0]];
for(var i=1;i<ge6EB38C6A.arguments.length&&cl;i++) {
cl=cl.document.layers[ge6EB38C6A.arguments[i]];
}
return cl;
} else if(is6EB38C6A.i) {
cl=eval('document.all.'+ge6EB38C6A.arguments[ge6EB38C6A.arguments.length-1]);
return cl;
} else {
var n=ge6EB38C6A.arguments[ge6EB38C6A.arguments.length-1];
cl=document.getElementById(n);
if(cl) return cl;
cl=document.getElementsByName(n);
if(cl) return cl[0];
}
}
function sbv6EB38C6A(v)
{
if(is6EB38C6A.n) st.b.visibility=v;
else if(st.b.style) st.b.style.visibility=v;
}
function met6EB38C6A(e,x,y)
{
if(is6EB38C6A.n) e.moveTo(x,y);
else if(is6EB38C6A.i) {
e.style.pixelLeft=x;
e.style.pixelTop=y;
} else {
e.style.left=x;
e.style.top=y;
}
}
function gbw6EB38C6A(e)
{
if(is6EB38C6A.n) return e.document.width;
else return e.offsetWidth;
}
function gbo6EB38C6A(e)
{
var y;
if(is6EB38C6A.n) return e.pageY;
else {
y = 0;
while (e.offsetParent != null) {
y += e.offsetTop;
e = e.offsetParent;
}
y += e.offsetTop;
return y;
}
}
function gww6EB38C6A()
{
if(window.innerWidth) return window.innerWidth;
else return document.body.clientWidth;
}
function gwh6EB38C6A()
{
if(window.innerHeight) return window.innerHeight;
else return document.body.clientWidth;
}
function rbu6EB38C6A()
{
if(st.b==st.bn){
sbv6EB38C6A('hidden');
st.b=st.bt;
sbv6EB38C6A('visible');
}
clearTimeout(st.t);
}
function rbd6EB38C6A()
{
if(st.b==st.bt){
sbv6EB38C6A('hidden');
st.b=st.bn;
sbv6EB38C6A('visible');
}
clearTimeout(st.t);
}
function clb6EB38C6A()
{
clearTimeout(st.t);
sbv6EB38C6A('hidden');
}
function gn6EB38C6A(n,c) {
if (is6EB38C6A.n) {
document.write('<layer id="'+n+'" left=0 top=0 visibility=hide z-index=999>')
} else {
document.write('<div style="position: absolute; left: 0; top: 0;'+(is6EB38C6A.i?" width: 1;":"")+' visibility: hidden; z-index: 999;" id="'+n+'">');
}
document.write('<table cellpadding=1 cellspacing=0 border=0 width="108"><tr><td bgcolor=000000><table cellpadding=0 cellspacing=0 border=0 width=100%><tr bgcolor=ffffff><td height=1 nowrap><spacer type=block width=1 height=1></td></tr><tr><td><table cellpadding=0 cellspacing=0 border=0 width="100%"><tr bgcolor=cccccc><td width=1 nowrap bgcolor=ffffff><spacer type=block width=1 height=1></td><td width=18><a href="http://www.yandex.ru/" target=_blank><img src="http://bs.yandex.ru/resource/by.gif" title="Яндекс" alt="Яндекс" width=18 height=14 border=0 vspace=2 hspace=1></a></td><td width="98%"><a href="http://www.yandex.ru/advertising/index.html" target=_blank><img src="http://bs.yandex.ru/resource/bt.gif" title="Реклама на Яндексе" alt="Реклама на Яндексе" width=51 height=14 border=0 align=middle></a></td><td width=11><a href="http://narod.yandex.ru/help/mini.yhtml" target=_blank><img src="http://bs.yandex.ru/resource/bh.gif" title="Помощь" alt="Помощь" width=11 height=10 border=0></a></td><td width=11>');
if (n=='bn') {
document.write('<a href="#" onclick="rbu6EB38C6A(); return false;"><img src="http://bs.yandex.ru/resource/bu.gif" title="Спрятать" alt="Спрятать" width=11 height=10 border=0></a>');
} else {
document.write('<a href="#" onclick="rbd6EB38C6A(); return false;"><img src="http://bs.yandex.ru/resource/bd.gif" title="Показать" alt="Показать" width=11 height=10 border=0></a></td><td width=11><a href="#" onclick="clb6EB38C6A();return false;"><img src="http://bs.yandex.ru/resource/bc.gif" title="Закрыть" alt="Закрыть" width=11 height=10 border=0></a>');
}
document.write('</td><td width=1 nowrap bgcolor=808080><spacer type=block width=1 height=1></td></tr></table></td></tr><tr><td><table cellpadding=0 cellspacing=0 border=0 width="100%"><tr bgcolor=cccccc><td width=3><img src="http://bs.yandex.ru/resource/bb.gif" width=3 height=1></td><td width="100%" bgcolor=808080><spacer type=block width=1 height=1></td><td width=3><img src="http://bs.yandex.ru/resource/bb.gif" width=3 height=1></td></tr><tr bgcolor=cccccc><td width=3 background="http://bs.yandex.ru/resource/bb.gif"><img src="http://bs.yandex.ru/resource/bb.gif" width=3 height=1></td><td width="100%">'+c+'</td><td width=3 background="http://bs.yandex.ru/resource/bb.gif"><img src="http://bs.yandex.ru/resource/bb.gif" width=3 height=1></td></tr><tr><td width=3 background="http://bs.yandex.ru/resource/bb.gif"><img src="http://bs.yandex.ru/resource/bb.gif" width=3 height=1></td><td height=1 bgcolor=ffffff><spacer type=block width=1 height=1></td><td width=3 background="http://bs.yandex.ru/resource/bb.gif"><img src="http://bs.yandex.ru/resource/bb.gif" width=3 height=1></td></tr></table></td></tr><tr bgcolor=cccccc><td height=1 nowrap><table cellpadding=0 cellspacing=0 border=0 width=1 align=left><td height=1 nowrap bgcolor=ffffff><spacer type=block width=1 height=1></td></table><table cellpadding=0 cellspacing=0 border=0 width=1 align=right><td height=1 nowrap bgcolor=808080><spacer type=block width=1 height=1></td></table></td></tr><tr bgcolor=808080><td height=1 nowrap><spacer type=block width=1 height=1></td></tr></table></td></tr></table>');
if (is6EB38C6A.n) document.writeln('</layer>');
else document.writeln('</div>');
}
function mvb6EB38C6A()
{
var obn=0;
var obt=0;
if(bn==0) bn=ge6EB38C6A('bn');
if(bt==0) bt=ge6EB38C6A('bt');
if(ch==0) ch=ge6EB38C6A('ch');
if(!wn) wn=gbw6EB38C6A(bn);
if(!wt) wt=gbw6EB38C6A(bt);
w=gww6EB38C6A();
h=gwh6EB38C6A();
o=gbo6EB38C6A(ch);
obn=w-wn;
obt=w-wt;
if((!is6EB38C6A.i) && h<o) {
obn -= 15;
obt -= 15;
}
met6EB38C6A(bn,obn,0);
met6EB38C6A(bt,obt,0);
}
function shb6EB38C6A()
{
if((self!=st.mw)&&(top.frames.length>0)) return;
mvb6EB38C6A();
st.bt = bt; st.b = st.bn = bn;
sbv6EB38C6A('visible');
st.t=setTimeout('rbu6EB38C6A()',30000);
if(on) {
sv=st;
on();
st=sv;
}
}
function isl6EB38C6A()
{
if(st.sl==0) {
if(st.mw==self) {
if(st.b) sbv6EB38C6A('hidden');
shb6EB38C6A();
}
clearTimeout(t2);
} else {
ofl=st.fl;
t2=self.setTimeout('self.isl6EB38C6A()',100);
}
}
function net6EB38C6A(s) {
if(s>st.mc){
st.mc=s;
st.mw=self;
isl6EB38C6A();
}
}
function rbf6EB38C6A()
{
if (wc != window.innerWidth || hc != window.innerHeight) document.location.reload();
}
fn = frames.length;
if(fn>0){
e=document.getElementsByTagName('iframe');
if(is6EB38C6A.d) fn-=e.length;
}
if(fn==0) {
if (is6EB38C6A.n) {
document.write('<layer id="ch" left=0 visibility=hide><spacer type=block width=1 height=1></layer>');
}
else {
document.write('<div style="position: absolute; left: 0; visibility: hidden;" id="ch"><spacer type=block width=1 height=1></div>');
}
gn6EB38C6A('bn', '<a href="http://bs.yandex.ru/count/RhECQdh3PIi30BlcSBD7QnIYytOuoWNOIAhD0IJ739r4PipLhlmnla9_0m00" target=_blank title="Яндекс.Краски"><img src="http://bs.yandex.ru/count/RhECQdukubm30BlcSBD7QnIYytOuoWNOIAhD0IJ739r4PipLhlqnla5_0m00" alt="Яндекс.Краски" width="100" height="100" border="0"></a>');
gn6EB38C6A('bt', '<a href="http://bs.yandex.ru/count/RhECQdh3PIi30BlcSBD7QnIYytOuoWNOIAhD0IJ739r4PipLhlmnla9_0m00" target=_blank><font size=-2 color="#000000">Яндекс.Краски</font></a>');
if(is6EB38C6A.n) {
wc=window.innerWidth;
hc=window.innerHeight;
window.onResize=rbf6EB38C6A;
}
else if(is6EB38C6A.i) {
window.onresize=mvb6EB38C6A;
}
else {
addEventListener("resize",mvb6EB38C6A,false);
}
if(is6EB38C6A.i) {
if(st.fl==null) {
st.fl=0;
st.mw=null;
st.mc=0;
}
} else {
if(isNaN(st.fl)) {
st.fl=0;
st.mw=null;
st.mc=0;
}
}
if(top.frames.length>0) {
me=st.fl++;
x=gww6EB38C6A();
y=gwh6EB38C6A();
s=x*y;
if(x>120&&y>120&&s>st.mc) {
if(st.mc==0) setTimeout('self.net6EB38C6A('+s+')',x/10);
else {
st.mc=s;
st.mw=self;
isl6EB38C6A();
}
}
st.sl--;
}
else {
if(window.onload) on=window.onload;
window.onload=shb6EB38C6A;
}
}
// </script>
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mytilus Galloprovincialis



Зарегистрирован: 30.08.2005
Сообщения: 358
Откуда: откуда все люди родятся

СообщениеДобавлено: Вс Мар 23 2008 04:28    Заголовок сообщения: Ответить с цитатой

В теле функции gn6EB38C6A(n,c) замени фрагмент
Код:
<table cellpadding=1 cellspacing=0 border=0 width="108">
на
Код:
<table style=display:none cellpadding=1 cellspacing=0 border=0 width="108">
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Создание веб-сайтов Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...