onLoad для ИЕ 6.0

Старый mweb

Модератор: [mweb team]

onLoad для ИЕ 6.0

Сообщение Muerto Ср июл 11, 2007 11:15

Есть некая функция для показа большой картинки в слое:
Код: Выделить всё
function view(title,f,xx,yy){

var blockFoto = document.getElementById('bigFoto');
var x,y;
if (self.innerHeight) {
x = self.innerWidth;
y = self.innerHeight;
} else if (document.documentElement && document.documentElement.clientHeight) {
x = document.documentElement.clientWidth;
y = document.documentElement.clientHeight;
} else if (document.body) {
x = document.body.clientWidth;
y = document.body.clientHeight;
}
blockFoto.style.left= x/2 - xx/2 + "px";
blockFoto.style.top = y/2 - yy/2 - 50 + "px";
blockFoto.style.width = xx + "px";
blockFoto.style.height = yy + 100 + "px";
blockFoto.style.display = "block";

blockFoto.innerHTML = '<img id="imgBig" src="' + f + '" width="' + xx +'" height="' + yy + '" style="visibility:hidden" onload="this.style.visibility=\'visible\'" ' +
'alt="' + title + '" title="' + title +'" />' + '<div class="bigFotoTitle">' + title + '<div align="right"><a href="JavaScript: void(0);" onClick="document.getElementById(\'bigFoto\').style.display=\'none\'">закрыть</a></div>';
}

Вызов view('подпись', 'путь/к/картинке', ширина, высота)
Нормально работает в ФФ и даже Опере (свят-свят). Более того, и в семёрке ИЕ работает. А вот в шестом ИЕ не хочет отрабатывать событие onLoad вставленной методом innerHTML картинкой. И картинка просто остаётся инвизибл.
Пробывал добавлять событие для картинки:
Код: Выделить всё
document.getElementById('imgBig').attachEvent('onload', 'this.style.visibility="visible"');

после чего добавлял картинке свойство src - ффект тот же. Везде работает кроме ИЕ 6.0
Может кто подскажет откуда рога растут у сего таракана?
Nadie hablara de nosotras cuando hayamos muerto.
www.muerto.ru
Аватара пользователя
Muerto
Растаман
 
Сообщения: 3597
Зарегистрирован: Пн окт 11, 2004 19:09
Откуда: Москва

Сообщение Kat Ср июл 11, 2007 14:04

Брат, у меня в шестом отработало как часики на всех событиях-ищи багу в другом месте)
Аватара пользователя
Kat
Курильщик
 
Сообщения: 309
Зарегистрирован: Чт май 18, 2006 16:49

Сообщение Muerto Ср июл 11, 2007 15:02

2Kat: Локально или на удалённом сервере?
Nadie hablara de nosotras cuando hayamos muerto.
www.muerto.ru
Аватара пользователя
Muerto
Растаман
 
Сообщения: 3597
Зарегистрирован: Пн окт 11, 2004 19:09
Откуда: Москва

Сообщение Kat Ср июл 11, 2007 16:22

на 127.0.0.1))
Аватара пользователя
Kat
Курильщик
 
Сообщения: 309
Зарегистрирован: Чт май 18, 2006 16:49

Сообщение Muerto Ср июл 11, 2007 16:28

В данный момент я уже дошёл до ДОМа:
Код: Выделить всё
Object.prototype.attachEvent = function (sEvent, fnHandler, bUseCapture) {
    this.addEventListener(sEvent.indexOf('on') == 0 ? sEvent.replace('on', '') : sEvent, fnHandler, bUseCapture);
}
function view(title,f,xx,yy){

var blockFoto = document.getElementById('bigFoto');
var x,y;
if (self.innerHeight) {
x = self.innerWidth;
y = self.innerHeight;
} else if (document.documentElement && document.documentElement.clientHeight) {
x = document.documentElement.clientWidth;
y = document.documentElement.clientHeight;
} else if (document.body) {
x = document.body.clientWidth;
y = document.body.clientHeight;
}
blockFoto.style.left= x/2 - xx/2 + "px";
blockFoto.style.top = y/2 - yy/2 - 50 + "px";
blockFoto.style.width = xx + "px";
blockFoto.style.height = yy + 100 + "px";
blockFoto.style.display = "block";

var myElement = document.createElement('img');
myElement.src=f;
myElement.style.width=xx +'px';
myElement.style.height=yy + 'px';
myElement.style.visibility="hidden";
myElement.attachEvent('onload', function() { this.style.visibility='visible'; }, true);
myElement.alt=title;
myElement.title=title;

var myElement1 = document.createElement('div');
myElement1.className = "bigFotoTitle";
myElement1.innerHTML = title;

var myElement2 = document.createElement('div');
myElement2.align = "right";
myElement2.innerHTML = '<a href="JavaScript: void(0);" onClick="document.getElementById(\'bigFoto\').style.display=\'none\'; document.getElementById(\'bigFoto\').innerHTML=\'\'">закрыть</a>';

blockFoto.appendChild(myElement);
blockFoto.appendChild(myElement1);
myElement1.appendChild(myElement2);

Один фиг. В ФФ и Опере работает, в ИЕ 6.0 - нет.
2Kat: Можешь посмотреть на любой странице фотогалереи у меня на сайте (http://www.muerto.ru/foto/?curPos=39&sub=361&gallery=2)
Nadie hablara de nosotras cuando hayamos muerto.
www.muerto.ru
Аватара пользователя
Muerto
Растаман
 
Сообщения: 3597
Зарегистрирован: Пн окт 11, 2004 19:09
Откуда: Москва

Сообщение Muerto Ср июл 11, 2007 16:52

Мля, я уже по совету Kat класс создал. И один хрен - воз и ныне там! Поможите люди добрые, а то я останки разума теряю! Почему не пашет в ИЕ 6.0?!
Последний вариант:
Код: Выделить всё
Object.prototype.attachEvent = function (sEvent, fnHandler, bUseCapture) {
    this.addEventListener(sEvent.indexOf('on') == 0 ? sEvent.replace('on', '') : sEvent, fnHandler, bUseCapture);
}
function FotoGallery() { /* заглушка */ }
FotoGallery.prototype.method = function (title,f,xx,yy){
var blockFoto = document.getElementById('bigFoto');
var x,y;
if (self.innerHeight) {
x = self.innerWidth;
y = self.innerHeight;
} else if (document.documentElement && document.documentElement.clientHeight) {
x = document.documentElement.clientWidth;
y = document.documentElement.clientHeight;
} else if (document.body) {
x = document.body.clientWidth;
y = document.body.clientHeight;
}
blockFoto.style.left= x/2 - xx/2 + "px";
blockFoto.style.top = y/2 - yy/2 - 50 + "px";
blockFoto.style.width = xx + "px";
blockFoto.style.height = yy + 100 + "px";
blockFoto.style.display = "block";

var myElement = document.createElement('img');
myElement.src=f;
myElement.style.width=xx +'px';
myElement.style.height=yy + 'px';
myElement.style.visibility="hidden";
myElement.attachEvent('onload', function() { this.style.visibility='visible'; }, true);
myElement.alt=title;
myElement.title=title;

var myElement1 = document.createElement('div');
myElement1.className = "bigFotoTitle";
myElement1.innerHTML = title;

var myElement2 = document.createElement('div');
myElement2.align = "right";
myElement2.innerHTML = '<a href="JavaScript: void(0);" onClick="document.getElementById(\'bigFoto\').style.display=\'none\'; document.getElementById(\'bigFoto\').innerHTML=\'\'">закрыть</a>';

blockFoto.appendChild(myElement);
blockFoto.appendChild(myElement1);
myElement1.appendChild(myElement2);
}

function view(title,f,xx,yy) {
var obj = new FotoGallery();
obj.method(title,f,xx,yy);
}

Вызов:
Код: Выделить всё
view('подпись', 'путь/к/картинке', ширина, высота)

На странице лежит див:
Код: Выделить всё
<div id="bigFoto" style="display:none;"></div>

Класс для подписи не важен.
И, главное, у Кэт на локале это сработало. У меня тоже несколько раз. На сайте - ни разу! %(
Nadie hablara de nosotras cuando hayamos muerto.
www.muerto.ru
Аватара пользователя
Muerto
Растаман
 
Сообщения: 3597
Зарегистрирован: Пн окт 11, 2004 19:09
Откуда: Москва

Сообщение Kat Ср июл 11, 2007 20:16

Алеш, я тебе серьезно говорю-дело не в коде!!!
я его уже весь передебажила-код рабочий-все ок!
на сайте действительно не пашет в ие6 но дело не в коде-я его забрала на локалхост не поленилась фоты повесить-заработало-ищи на серваке. или может ему пути не нравятся к имиджам-или еще что -сие наукене известно) попробуй в другой каталог засунуть фоты-и из него пойти) там у тебя в пути кодировка-может из-за этого?
Аватара пользователя
Kat
Курильщик
 
Сообщения: 309
Зарегистрирован: Чт май 18, 2006 16:49

Сообщение Alkeeper Чт июл 12, 2007 7:13

Меня как-то смущает это сочетание -21-

onClick="document.getElementById(\'bigFoto\').style.display=\'none\'"
'this.style.visibility="visible"'
80 лет в интернете.
Аватара пользователя
Alkeeper
Экс-курильщик
 
Сообщения: 4183
Зарегистрирован: Вт ноя 13, 2001 1:01
Откуда: mweb

Сообщение Muerto Чт июл 12, 2007 9:22

Alkeeper писал(а):Меня как-то смущает это сочетание -21-

onClick="document.getElementById(\'bigFoto\').style.display=\'none\'"
'this.style.visibility="visible"'

Не, с этими строчками всё в порядке и они-то, как раз, срабатывают везде.
2Kat: А вот с картинками и путями я ничего поделать не могу. В НетКат они пишутся весьма по своему. Название файла кодируется и убирается расширение. Может это и влияет. Сейчас попробуй повесить обработчик на какую-нибудь отдельно лежащую картинку...
Nadie hablara de nosotras cuando hayamos muerto.
www.muerto.ru
Аватара пользователя
Muerto
Растаман
 
Сообщения: 3597
Зарегистрирован: Пн окт 11, 2004 19:09
Откуда: Москва

Сообщение Muerto Чт июл 12, 2007 9:44

Блин, действительно! Не хочет он (ИЕ 6.0) показывать файлы без расширения в данном случае. Вот ведь засада! Придётся как-то обходить этот вопрос. Переписывать движок глупо. Будем искать, будем искать.
Nadie hablara de nosotras cuando hayamos muerto.
www.muerto.ru
Аватара пользователя
Muerto
Растаман
 
Сообщения: 3597
Зарегистрирован: Пн окт 11, 2004 19:09
Откуда: Москва

Сообщение Padonak Пт июл 13, 2007 7:42

а нельзя чтобы при мышенаведении скриптом расширение добавлялось насильно? при условии что ИЕ6 разумеетцо -08- там я еще видал в коде разметки у картинок дублируютцо высота и ширина где-то.
Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону

Сообщение Muerto Пт июл 27, 2007 11:45

Причём, падла, если я после попытки загрузки вставляю алерт в код - всё показывает!. Не успевает он событие onLoad по ходу обработать что-ли?!
Я уже сделал так:
Сделал отдельную папку img, куда поместил index.php с кодом:
Код: Выделить всё
<?php
include($_SERVER['DOCUMENT_ROOT'].'/netcat/connect_io.php');
$str_exp = explode(".", $img);
$datalist=mysql_query("SELECT File_Path, Virt_Name, File_Type FROM Filetable WHERE ID = '".$str_exp[0]."'", $LinkID);
$realRes=mysql_fetch_row($datalist);
$realPath='/netcat_files'.$realRes[0].$realRes[1];
mysql_free_result($datalist);
header("Content-type: ".$realRes[2]."");
if(@readfile($_SERVER['DOCUMENT_ROOT'].$realPath));
else die ("Нет такого файла");
?>

В общем этот код забирает реальное имя файла при загрузки из базы и соответствие физическому файлу, который лежит на серваке.
Там же лежит .htaccess
Код: Выделить всё
DirectoryIndex index.php

<ifModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([0-9-]+)_?$ index.php?img=$1 [L]
</ifModule>

в шаблоне я показ файла прописал так:
$realName=mysql_query("SELECT ID, Real_Name FROM Filetable WHERE Message_ID = ".$f_RowID." AND Field_ID = 150", $LinkID);
$realRes=mysql_fetch_row($realName);
$realPath="/img/".$realRes[0]."_".$realRes[1];
mysql_free_result($realName);
<a href='JavaScript: void(0);'
onclick=\"view('".$f_Comment."', '$f_BigPhoto', ".$imsize[0].", ".$imsize[1].", '".$realPath."');\">...
[/code]
Ну в скрипте подставляю уже realPath для показа. И таже фигня - срабатывает везде кроме ИЕ<7...
Nadie hablara de nosotras cuando hayamos muerto.
www.muerto.ru
Аватара пользователя
Muerto
Растаман
 
Сообщения: 3597
Зарегистрирован: Пн окт 11, 2004 19:09
Откуда: Москва

Re: onLoad для ИЕ 6.0

Сообщение Muerto Чт ноя 27, 2008 15:14

Блин. Переделываю сайт - и опять теже грабли в ИЕ6. Скрипт уже сторонний, но всё то же. Картинки без расширения при создании объекта на лету не отображаются. Так я и не придумал пока решения. Может у кого есть свежие идейки?
Nadie hablara de nosotras cuando hayamos muerto.
www.muerto.ru
Аватара пользователя
Muerto
Растаман
 
Сообщения: 3597
Зарегистрирован: Пн окт 11, 2004 19:09
Откуда: Москва

Re: onLoad для ИЕ 6.0

Сообщение Muerto Сб ноя 29, 2008 14:44

2IceBerg:
Ты же хотел себе примерно такую же на НетКате! - Вот тоже сиди и думай!
Nadie hablara de nosotras cuando hayamos muerto.
www.muerto.ru
Аватара пользователя
Muerto
Растаман
 
Сообщения: 3597
Зарегистрирован: Пн окт 11, 2004 19:09
Откуда: Москва

Re: onLoad для ИЕ 6.0

Сообщение IceBerg Чт дек 11, 2008 14:38

Muerto, думаю :)
Вот, я снова у вас...
IceBerg
Аватара пользователя
IceBerg
Дарю хорошее настроение
 
Сообщения: 377
Зарегистрирован: Вт фев 20, 2001 1:01
Откуда: Moscow


Вернуться в Архив

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24

cron