diff options
Diffstat (limited to 'skins/default/pngbehavior.htc')
-rw-r--r-- | skins/default/pngbehavior.htc | 118 |
1 files changed, 64 insertions, 54 deletions
diff --git a/skins/default/pngbehavior.htc b/skins/default/pngbehavior.htc index 54ee96890..fb5f1c8d4 100644 --- a/skins/default/pngbehavior.htc +++ b/skins/default/pngbehavior.htc @@ -1,74 +1,84 @@ -<public:component> +<public:component lightWeight="true"> <public:attach event="onpropertychange" onevent="propertyChanged()" /> -<public:attach event="onbeforeprint" for="window" onevent="beforePrint()" /> -<public:attach event="onafterprint" for="window" onevent="afterPrint()" /> +<public:attach event="onbeforeprint" onevent="beforePrint()" for="window"/> +<public:attach event="onafterprint" onevent="afterPrint()" for="window"/> <script> /* * PNG Behavior * - * This script was created by Erik Arvidsson (erik(at)eae.net) + * This script was created by Erik Arvidsson (http://webfx.eae.net/contact.html#erik) * for WebFX (http://webfx.eae.net) - * Copyright 2002 - * - * For usage see license at http://webfx.eae.net/license.html + * Copyright 2002-2004 * - * Version: 1.01a + * For usage see license at http://webfx.eae.net/license.html + * + * Version: 1.02 + * Created: 2001-??-?? First working version + * Updated: 2002-03-28 Fixed issue when starting with a non png image and + * switching between non png images + * 2003-01-06 Fixed RegExp to correctly work with IE 5.0x + * 2004-05-09 When printing revert to original * */ - -var IS_PNG = /\.png$/i; -var supported = /MSIE ((5\.5)|6)/.test(navigator.userAgent) && navigator.platform == 'Win32'; -var realSrc, realHeight, realWidth; -var blankSrc = 'skins/default/images/blank.gif'; + +var supported = /MSIE ((5\.5)|6)/.test(navigator.userAgent) && navigator.platform == "Win32", + realSrc, + blankSrc = "skins/default/images/blank.gif", + isPrinting = false; + if (supported) fixImage(); + function propertyChanged() { - if (supported && event.propertyName == 'src') { - var i = element.src.lastIndexOf(blankSrc); - if (i == -1 || i != element.src.length - blankSrc.length) { - fixImage(); - } - } -} + if (!supported || isPrinting) return; + + var pName = event.propertyName; + if (pName != "src") return; + // if not set to blank + if (!new RegExp(blankSrc).test(src)) + fixImage(); +}; + function fixImage() { - if (realSrc && element.src == realSrc) { - // this is an attempt to set the image to itself! - // pointless - leave the filter as-is, restore the blank image - element.src = blankSrc; - } else { - // set the image to something different - if (IS_PNG.test(element.src)) { - // fixable PNG - realSrc = element.src; - realWidth = element.width; - realHeight = element.height; - element.src = blankSrc; - element.style.width = realWidth + 'px'; - element.style.height = realHeight + 'px'; - element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + encodeURI(realSrc) + "',sizingMethod='scale')"; - } else { - // ordinary image - make sure the fix is removed - if (realSrc) { - realSrc = null; - element.runtimeStyle.filter = ''; - } - } - } + // get src + var src = element.src; + + // check for real change + if (src == realSrc && /\.png$/i.test(src)) { + element.src = blankSrc; + return; + } + + if ( ! new RegExp(blankSrc).test(src)) { + // backup old src + realSrc = src; + } + + // test for png + if (/\.png$/i.test(realSrc)) { + // set blank image + element.src = blankSrc; + // set filter + element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft." + + "AlphaImageLoader(src='" + src + "',sizingMethod='scale')"; + } + else { + // remove filter + element.runtimeStyle.filter = ""; + } } + function beforePrint() { - if (realSrc) { - supported = false; - element.src = realSrc; - element.runtimeStyle.filter = ''; - supported = true; - } + isPrinting = true; + element.src = realSrc; + element.runtimeStyle.filter = ""; + realSrc = null; } + function afterPrint() { - if (realSrc) { - var rs = realSrc; - realSrc = null; - element.src = rs; - } + isPrinting = false; + fixImage(); } + </script> </public:component> |