Jump to content
  • 0

Можно ли заменить behavior другим свойством?


Sulpher
 Share

Question

Доброго времени суток.

У меня на сайте используется фишка PNG behavior, которая корректно отображает PNG-24 в IE5.5/6. (http://webfx.eae.net/dhtml/pngbehavior/pngbehavior.html)

При прохождении теста на валидность, валидатор указал на ошибку:

Property behavior doesn't exist : url('modules/fisheye_menu/png.htc')

Т.е. проблема в использовани свойства behavior:

style="behavior: url('modules/fisheye_menu/png.htc');"

Видимо, валидатор не понимает специфичное для IE свойство и сообщает об ошибке.

Есть ли возможность использовать альтернативное свойство?

Надеюсь на помощь.

Link to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 0

которая корректно отображает PNG-24 в IE5.5/6.

Проблемма в том что IE6 некоректно обрабатываем PNG и альтернативное свойство использовать gif или другой формат :).

Поместите свойство в стили только для ие используя условные комментарии предусмотренные браузером ИЕ.

Лично мое мнение. Использовать PNG behavior не люблю, вместо него пользуюсь скриптом основоным на стандартном экспрешене ИЕ для png

filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/img/lentaTopImage.png);

function fixPNG(element)
{
if (/MSIE (5.5|6).+Win/.test(navigator.userAgent))
{
var src;
if (element.tagName=='img')
{
if (/.png$/.test(element.src))
{
src = element.src;
element.src = "/img/blank.gif";
}
}
else
{
src = element.currentStyle.backgroundImage.match(/url("(.+.png)")/i)
if (src)
{
src = src[1];
element.runtimeStyle.backgroundImage="none";
}
}
if (src) element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='crop')";
}
}

+

 {filter:expression(fixPNG(this));}

Link to comment
Share on other sites

  • 0

Спасибо за потраченное Вами время на ответ, maddogrts. Попробовал, как Вы советовали.

Действительно, такой скрипт более компактен, не использует 1x1 gif.

Я вынес ява скрипт в отдельный файл и в html документе просто его подгружаю.

Вот что получилось:

http://www.blackminds.fatal.ru/sulpher/ie-png.html

Однако validator снова сообщает об ошибке:

Line 12, Column 43: there is no attribute "onload".

"vald

(http://validator.w3.org/check?uri=http%3A%...=Inline&group=0)

Можно ли каким-нибудь образом решить эту проблему? Хотелось бы ,чтобы валидатор "скушал" наконец документ и не выдавал ошибку.

Link to comment
Share on other sites

  • 0

Ах, да, забыл сказать: код скрипта я использовал такой:

var arVersion = navigator.appVersion.split("MSIE")

var version = parseFloat(arVersion[1])

function fixPNG(myImage)

{

if ((version >= 5.5) && (version < 7) && (document.body.filters))

{

var imgID = (myImage.id) ? "id='" + myImage.id + "' " : ""

var imgClass = (myImage.className) ? "class='" + myImage.className + "' " : ""

var imgTitle = (myImage.title) ?

"title='" + myImage.title + "' " : "title='" + myImage.alt + "' "

var imgStyle = "display:inline-block;" + myImage.style.cssText

var strNewHTML = "

+ " style="" + "width:" + myImage.width

+ "px; height:" + myImage.height

+ "px;" + imgStyle + ";"

+ "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"

+ "(src='" + myImage.src + "', sizingMethod='scale');">

"

myImage.outerHTML = strNewHTML

}

}

Оригинал взял отсюда: http://homepage.ntlworld.com/bobosola/pnginfo.htm

Link to comment
Share on other sites

  • 0

А у меня с использованием скрипта возникло 2 пролемы:

1) Ие6 определет element.tagName не как img,а как IMG (может это от версий 6-го ИЕ зависит и надо проверять и на img и на IMG?). Ну это ладно, это я в коде поправил.

2) он отхватил у меня пикселей 10-15 справой стороны от банннера

И еще такой вопрос.Хотелось бы применить данный скрипт не к уже существующему изображению,а к вновь созданному при помощи JS.

document.write('<img src="<?=e_domen_name?>img.php?idcamp=<?=$_GET['idcamp']?>" width="400" style="filter:expression(fixPNG(this));">');

Почему-то не получается:) Заранее спасибор за помощь.

function fixPNG(element)

{

if (/MSIE (5.5|6).+Win/.test(navigator.userAgent))

{

var src;

if (element.tagName=='IMG')

{

if (/.png$/.test(element.src))

{

src = element.src;

element.src = "/img/blank.gif";

}

}

else

{

src = element.currentStyle.backgroundImage.match(/url("(.+.png)")/i)

if (src)

{

src = src[1];

element.runtimeStyle.backgroundImage="none";

}

}

if (src) element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='crop')";

}

}

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy