Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   PNG-fix наболевшая тема в ie6 (https://javascript.ru/forum/misc/2609-png-fix-nabolevshaya-tema-v-ie6.html)

greatilya 22.01.2009 15:25

PNG-fix наболевшая тема в ie6
 
Столкнулся с проблемой: подключил к сайту fancybox, а у него есть скриптик jquery.pngFix.js . Я понадеялся на него, что он и мои все файлы PNG сделает "правильными" (заставит их отображаться в ie6). Но не тут то было, он просто отключил эти PNG`шки. Посмотрите на это: http://www.derevo96.ru/ Посоветуйте пожалуйста, может вы знаете какой-нибудь другой скрипт решения данной проблемы, чтобы я мог просто заменить файл jquery.pngFix.js

Kolyaj 22.01.2009 15:51

Выкинуть нафиг все скрипты а-ля pngfix и прописывать все руками. Это не так сложно как кажется, зато намного гибче. Редко бывает очень много png-шек на странице.

greatilya 22.01.2009 16:00

подскажите пожалуйста Kolyaj как правильно это делать, просто уже пробовал один способ, ручной, в итоге страница очень долго грузилась. Как это делаете вы?

Kolyaj 22.01.2009 16:24

Код:

.class  {
    background-image: url(file.png);
}
* html .class {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="file.png", sizingMethod="crop");
}


x-yuri 22.01.2009 16:38

не скажу стоит ли использовать автоматическую коррекцию всех png на страничке. Kolyajб автоматическая заметно медленнее?

А по поводу не автоматической у Лебедева, например, такая же реализация, но при этом надо просто добавить behavior: url('pngfix.htc'); и не надо помнить как именно тот фильтр называется и как его применить

Kolyaj 22.01.2009 16:57

Цитата:

Сообщение от x-yuri
автоматическая заметно медленнее?

Не знаю, она менее гибкая.

Цитата:

Сообщение от x-yuri
надо просто добавить behavior

Те же яйца, что и остальные pngfix, только в профиль.

x-yuri 22.01.2009 17:24

Kolyaj, разница в том, что не надо помнить как применять фильтры, какой фильтр применить и какие нужно задать параметры
кроме того, понятнее, когда у тебя в css написано
behavior: url('pngfix.htc');

Но проблема у человека на самом деле в том была, что jquery.pngFix.js меняет картинки на span'ы
в качестве альтернативы могу привести такой вариант. Он кроме всего прочего еще должен корректно обрабатывать изменение src картинки

Kolyaj 22.01.2009 18:14

pngfix.htc это то же самое, что и все остальные скрипты, а не то же самое, что я сказал.

x-yuri 22.01.2009 18:19

Цитата:

pngfix.htc это то же самое, что и все остальные скрипты, а не то же самое, что я сказал
с той точки зрения, что все они решают проблему за тебя, а ты предлагаешь решить ее самостоятельно - да

Kolyaj 22.01.2009 18:20

Они решают проблему за меня, поэтому бесконтрольны.

Вобщем флуд это все :)

greatilya 23.01.2009 11:23

эх... стесняюсь задать вопрос, но задам. А если png у меня не в img а просто допустим у таблицы в стилях задним фоном прписана, тогда что?

Kolyaj 23.01.2009 11:37

А я код привел как раз для фона, с img все посложнее.

x-yuri 23.01.2009 15:31

а по поводу img: разве нельзя просто добавить к нему background-image такой же?

ZoNT 23.01.2009 16:11

Цитата:

Сообщение от x-yuri (Сообщение 11254)
а по поводу img: разве нельзя просто добавить к нему background-image такой же?

Так и делается, только ещё и .src удалить надо.

Kolyaj 23.01.2009 16:16

Не удалить, а прозрачную гифку прописать.

ZoNT 23.01.2009 16:20

Цитата:

Сообщение от Kolyaj (Сообщение 11260)
Не удалить, а прозрачную гифку прописать.

Да-да, правильно... Потому что удалить src не получится (только вот можно не сразу всё на блюдечке давать, а заставлять спрашивающих хоть чуть-чуть думать... ну или хотя бы смотреть код всяких png-fix)

greatilya 23.01.2009 20:27

ZoNT, я с Вами полностю согласен, по поводу того, что надо заставлять думать. Но создавая данную тему, я прежде всего хотел, чтобы когда яндекс проиндексирует данную тему, другие пользователи, могли увидеть развернутые МНЕНИЯ, именно мнения других программистов, по данному вопросу. Т.к многие компании, занимающиеся разработкой веб-сайтов, просто "боятся" PNG. А зачастую без них невозможно решить некие задачи.
Ещё вопрос к
Цитата:

хотя бы смотреть код
. Подобрый код:
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(s($){3.1s.1k=s(j){j=3.1a({12:\'1m.1j\'},j);8 k=(n.P=="r 10 Z"&&U(n.v)==4&&n.v.E("14 5.5")!=-1);8 l=(n.P=="r 10 Z"&&U(n.v)==4&&n.v.E("14 6.0")!=-1);o(3.17.16&&(k||l)){3(2).L("1r[@m$=.M]").z(s(){3(2).7(\'q\',3(2).q());3(2).7(\'p\',3(2).p());8 a=\'\';8 b=\'\';8 c=(3(2).7(\'K\'))?\'K="\'+3(2).7(\'K\')+\'" \':\'\';8 d=(3(2).7(\'A\'))?\'A="\'+3(2).7(\'A\')+\'" \':\'\';8 e=(3(2).7(\'C\'))?\'C="\'+3(2).7(\'C\')+\'" \':\'\';8 f=(3(2).7(\'B\'))?\'B="\'+3(2).7(\'B\')+\'" \':\'\';8 g=(3(2).7(\'R\'))?\'1d:\'+3(2).7(\'R\')+\';\':\'\';8 h=(3(2).1c().7(\'1b\'))?\'19:18;\':\'\';o(2.9.y){a+=\'y:\'+2.9.y+\';\';2.9.y=\'\'}o(2.9.t){a+=\'t:\'+2.9.t+\';\';2.9.t=\'\'}o(2.9.w){a+=\'w:\'+2.9.w+\';\';2.9.w=\'\'}8 i=(2.9.15);b+=\'<x \'+c+d+e+f;b+=\'9="13:11;1q-1p:1o-1n;O:W-V;N:1l;\'+g+h;b+=\'q:\'+3(2).q()+\'u;\'+\'p:\'+3(2).p()+\'u;\';b+=\'J:I:H.r.G\'+\'(m=\\\'\'+3(2).7(\'m\')+\'\\\', D=\\\'F\\\');\';b+=i+\'"></x>\';o(a!=\'\'){b=\'<x 9="13:11;O:W-V;\'+a+h+\'q:\'+3(2).q()+\'u;\'+\'p:\'+3(2).p()+\'u;\'+\'">\'+b+\'</x>\'}3(2).1i();3(2).1h(b)});3(2).L("*").z(s(){8 a=3(2).T(\'N-S\');o(a.E(".M")!=-1){8 b=a.X(\'1g("\')[1].X(\'")\')[0];3(2).T(\'N-S\',\'1f\');3(2).Q(0).Y.J="I:H.r.G(m=\'"+b+"\',D=\'F\')"}});3(2).L("1e[@m$=.M]").z(s(){8 a=3(2).7(\'m\');3(2).Q(0).Y.J=\'I:H.r.G\'+\'(m=\\\'\'+a+\'\\\', D=\\\'F\\\');\';3(2).7(\'m\',j.12)})}1t 3}})(3);',62,92,'||this|jQuery||||attr|var|style|||||||||||||src|navigator|if|height|width|Microsoft|function|padding|px|appVersion|margin|span|border|each|class|alt|title|sizingMethod|indexOf|scale|AlphaImageLoader|DXImageTransform|progid|filter|id|find|png|background|display|appName|get|align|image|css|parseInt|block|inline|split|runtimeStyle|Explorer|Internet|relative|blankgif|position|MSIE|cssText|msie|browser|hand|cursor|extend|href|parent|float|input|none|url|after|hide|gif|pngFix|transparent|blank|line|pre|space|white|img|fn|return'.split('|'),0,{}))

является компилированым кодом? Или что это? просто сжатый код? Какими программаи сжимается так код, а есть вообще программы реализующие обратный эффект "декомпилирования"

Octane 23.01.2009 20:33

Код сжат при помощи «Packer». Обратное преобразование выполняется при выполнении функцией «eval».

x-yuri 23.01.2009 20:38

а потом можно каким-нибудь javascript beautifier воспользоваться, например этим

ZoNT 23.01.2009 20:50

Цитата:

Сообщение от greatilya
Подобрый код:
eval(function(p,a,c,k,e,r){e=function(c){return(c< a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toStr ing(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(s($){3.1s.1k=s(j){j=3.1a({12:\'1m.1j\'},j);8 k=(n.P=="r 10 Z"&&U(n.v)==4&&n.v.E("14 5.5")!=-1);8 l=(n.P=="r 10 Z"&&U(n.v)==4&&n.v.E("14 6.0")!=-1);o(3.17.16&&(k||l)){3(2).L("1r[@m$=.M]").z(s(){3(2).7(\'q\',3(2).q());3(2).7(\'p\',3(2). p());8 a=\'\';8 b=\'\';8 c=(3(2).7(\'K\'))?\'K="\'+3(2).7(\'K\')+\'" \':\'\';8 d=(3(2).7(\'A\'))?\'A="\'+3(2).7(\'A\')+\'" \':\'\';8 e=(3(2).7(\'C\'))?\'C="\'+3(2).7(\'C\')+\'" \':\'\';8 f=(3(2).7(\'B\'))?\'B="\'+3(2).7(\'B\')+\'" \':\'\';8 g=(3(2).7(\'R\'))?\'1d:\'+3(2).7(\'R\')+\';\':\'\' ;8 h=(3(2).1c().7(\'1b\'))?\'19:18;\':\'\';o(2.9.y){a +=\'y:\'+2.9.y+\';\';2.9.y=\'\'}o(2.9.t){a+=\'t:\' +2.9.t+\';\';2.9.t=\'\'}o(2.9.w){a+=\'w:\'+2.9.w+\ ';\';2.9.w=\'\'}8 i=(2.9.15);b+=\'<x \'+c+d+e+f;b+=\'9="13:11;1q-1p:1o-1n;O:W-V;N:1l;\'+g+h;b+=\'q:\'+3(2).q()+\'u;\'+\'p:\'+3(2 ).p()+\'u;\';b+=\'J:I:H.r.G\'+\'(m=\\\'\'+3(2).7(\ 'm\')+\'\\\', D=\\\'F\\\');\';b+=i+\'"></x>\';o(a!=\'\'){b=\'<x 9="13:11;O:W-V;\'+a+h+\'q:\'+3(2).q()+\'u;\'+\'p:\'+3(2).p()+\' u;\'+\'">\'+b+\'</x>\'}3(2).1i();3(2).1h(b)});3(2).L("*").z(s(){8 a=3(2).T(\'N-S\');o(a.E(".M")!=-1){8 b=a.X(\'1g("\')[1].X(\'")\')[0];3(2).T(\'N-S\',\'1f\');3(2).Q(0).Y.J="I:H.r.G(m=\'"+b+"\',D=\ 'F\')"}});3(2).L("1e[@m$=.M]").z(s(){8 a=3(2).7(\'m\');3(2).Q(0).Y.J=\'I:H.r.G\'+\'(m=\\\ '\'+a+\'\\\', D=\\\'F\\\');\';3(2).7(\'m\',j.12)})}1t 3}})(3);',62,92,'||this|jQuery||||attr|var|style|| |||||||||||src|navigator|if|height|width|Microsoft |function|padding|px|appVersion|margin|span|border |each|class|alt|title|sizingMethod|indexOf|scale|A lphaImageLoader|DXImageTransform|progid|filter|id| find|png|background|display|appName|get|align|imag e|css|parseInt|block|inline|split|runtimeStyle|Exp lorer|Internet|relative|blankgif|position|MSIE|css Text|msie|browser|hand|cursor|extend|href|parent|f loat|input|none|url|after|hide|gif|pngFix|transpar ent|blank|line|pre|space|white|img|fn|return'.spli t('|'),0,{}))
является компилированым кодом? Или что это? просто сжатый код? Какими программаи сжимается так код, а есть вообще программы реализующие обратный эффект "декомпилирования"

Вот тебе декодированная тем же пакером функция:
(function($){jQuery.fn.pngFix=function(j){j=jQuery.extend({blankgif:'blank.gif'},j);var k=(navigator.appName=="Microsoft Internet Explorer"&&parseInt(navigator.appVersion)==4&&navigator.appVersion.indexOf("MSIE 5.5")!=-1);var l=(navigator.appName=="Microsoft Internet Explorer"&&parseInt(navigator.appVersion)==4&&navigator.appVersion.indexOf("MSIE 6.0")!=-1);if(jQuery.browser.msie&&(k||l)){jQuery(this).find("img[@src$=.png]").each(function(){jQuery(this).attr('width',jQuery(this).width());jQuery(this).attr('height',jQuery(this).height());var a='';var b='';var c=(jQuery(this).attr('id'))?'id="'+jQuery(this).attr('id')+'" ':'';var d=(jQuery(this).attr('class'))?'class="'+jQuery(this).attr('class')+'" ':'';var e=(jQuery(this).attr('title'))?'title="'+jQuery(this).attr('title')+'" ':'';var f=(jQuery(this).attr('alt'))?'alt="'+jQuery(this).attr('alt')+'" ':'';var g=(jQuery(this).attr('align'))?'float:'+jQuery(this).attr('align')+';':'';var h=(jQuery(this).parent().attr('href'))?'cursor:hand;':'';if(this.style.border){a+='border:'+this.style.border+';';this.style.border=''}if(this.style.padding){a+='padding:'+this.style.padding+';';this.style.padding=''}if(this.style.margin){a+='margin:'+this.style.margin+';';this.style.margin=''}var i=(this.style.cssText);b+='<span '+c+d+e+f;b+='style="position:relative;white-space:pre-line;display:inline-block;background:transparent;'+g+h;b+='width:'+jQuery(this).width()+'px;'+'height:'+jQuery(this).height()+'px;';b+='filter:progid:DXImageTransform.Microsoft.AlphaImageLoader'+'(src=\''+jQuery(this).attr('src')+'\', sizingMethod=\'scale\');';b+=i+'"></span>';if(a!=''){b='<span style="position:relative;display:inline-block;'+a+h+'width:'+jQuery(this).width()+'px;'+'height:'+jQuery(this).height()+'px;'+'">'+b+'</span>'}jQuery(this).hide();jQuery(this).after(b)});jQuery(this).find("*").each(function(){var a=jQuery(this).css('background-image');if(a.indexOf(".png")!=-1){var b=a.split('url("')[1].split('")')[0];jQuery(this).css('background-image','none');jQuery(this).get(0).runtimeStyle.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+b+"',sizingMethod='scale')"}});jQuery(this).find("input[@src$=.png]").each(function(){var a=jQuery(this).attr('src');jQuery(this).get(0).runtimeStyle.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader'+'(src=\''+a+'\', sizingMethod=\'scale\');';jQuery(this).attr('src',j.blankgif)})}return jQuery}})(jQuery);

greatilya 23.01.2009 21:50

огромное спасибо!

greatilya 03.02.2009 12:45

Извиняюсь, что поднял такой старый пост.
Сейчас пробую протестить отображение png с помощью IETester, и не могу понять. Вроде всё делаю правильно, но прозрачность не появляется. Пробовал и методом filter и iepngfix.htc. Не выходит. Кто знает, может быть IETester не обрабатывает filter?

ZoNT 03.02.2009 13:28

IETester вообще фигово работает (с флешом например), не сильно на него надейся..

x-yuri 03.02.2009 15:58

там написано, что пока только альфа версия - может потом будет лучше
вообще непонятно из-за чего могут быть проблемы. Он же не эмулировать поведение должен, думаю, а использовать реальные движки версий IE *DONT_KNOW*

cocacola 11.05.2009 17:48

Тоже использую PNGfix.
Примерно 5-10 полупрозрачных png на странице, и соотвтетсвенно все это дело "ВЕШАЕТ" IE6

При первой загрузке страницы происходит зависание на 1-2 минуты, при отключении PNGfix - сайт в IE6 просто летает!

Подскажите как бороться с этим!

Nicko 11.05.2009 19:47

Я для борьбы с IE6 использую такую конструкцию:
* html img.png {
  behavior:expression(!this.filterSetFlag ? this.filterSetFlag = (this.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+this.src+'",sizingMethod="image")',this.src = 'null.gif',true) : '');
}


Работает довольно быстро и корректно..

nemal07 06.03.2013 14:57

Добрый день господа.Подскажите у меня в шаблоне сайта очень много скриптов(по моему мнению),может подскажите их функционал например,я только их концовки пропишу:
jdgallery/mootools-1.2.5-core-yc.js" type="text/javascript"></script>
jdgallery/mootools-1.2-more.js" type="text/javascript"></script>
jd.gallery.js" type="text/javascript"></script>
jd.gallery.transitions.js" type="text/javascript"></script>
js/pngfix.js"></script>
MenuMatic_0.68.3.js" type="text/javascript" charset="utf-8">

danik.js 06.03.2013 16:57

- фреймворк мутулс, ядро (типа jquery, только с совершенно другим подходом)
- дополнения для мутулз, всякие там локализации, эффекты анимации и прочее
- какая-то галерея
- какие-то эффекты переходов для галереи
- фикс древнего осла (IE)
- хренотень какая-то


Часовой пояс GMT +3, время: 23:23.