iepngfix.htc让PNG-24在IE6中透明的方法 03 iepngfix.htc

<public:component>
<script type="text/javascript">

// IE5.5+ PNG Alpha Fix v2.0 Alpha
// (c) 2004-2009 Angus Turnbull http://www.twinhelix.com

// This is licensed under the GNU LGPL, version 2.1 or later.
// For details, see: http://creativecommons.org/licenses/LGPL/2.1/

var IEPNGFix = window.IEPNGFix || {};
IEPNGFix.data = IEPNGFix.data || {};


// CONFIG: blankImg is the path to blank.gif, *relative to the HTML document*.
// Try either:
// * An absolute path like:  '/images/blank.gif'
// * A path relative to this HTC file like:  thisFolder + 'blank.gif'
var thisFolder = document.URL.replace(/(  }

 this.hook.enabled = h;
};


IEPNGFix.process = function(elm, init) {
 // Checks the onpropertychange event (on first 'init' run, a fake event)
 // and calls the filter-applying-functions.

 if (
  !/MSIE (5\.5|6)/.test(navigator.userAgent) ||
  typeof elm.filters == 'unknown'
 ) {
  return;
 }
 if (!this.data[elm.uniqueID]) {
  this.data[elm.uniqueID] = {
   className: ''
  };
 }
 var data = this.data[elm.uniqueID],
  evt = init ? { propertyName: 'src,backgroundImage' } : event,
  isSrc = /src/.test(evt.propertyName),
  isBg = /backgroundImage/.test(evt.propertyName),
  isPos = /width|height|background(Pos|Rep)/.test(evt.propertyName),
  isClass = !init && ((elm.className != data.className) &&
   (elm.className || data.className));
 if (!(isSrc || isBg || isPos || isClass)) {
  return;
 }
 data.className = elm.className;
 var blank = this.blankImg.match(/([^\/]+)$/)[1],
  eS = elm.style,
  eCS = elm.currentStyle;

 // Required for Whatever:hover - erase set BG if className changes.
 if (
  isClass && (eS.backgroundImage.indexOf('url(') == -1 ||
  eS.backgroundImage.indexOf(blank) > -1)
 ) {
  return setTimeout(function() {
   eS.backgroundImage = '';
  }, 0);
 }

 // Foregrounds.
 if (isSrc && elm.src && { IMG: 1, INPUT: 1 }[elm.nodeName]) {
  if ((/\.png/i).test(elm.src)) {
   if (!elm.oSrc) {
    // MM rollover compat
    elm.oSrc = elm.src;
   }
   this.fix(elm, elm.src, 2);
  } else if (elm.src.indexOf(blank) == -1) {
   this.fix(elm, '');
  }
 }

 // Backgrounds.
 var bgSrc = eCS.backgroundImage || eS.backgroundImage;
 if ((bgSrc + elm.src).indexOf(blank) == -1) {
  var bgPNG = bgSrc.match(/url[("']+(.*\.png[^\)"']*)[\)"']/i);
  if (bgPNG) {
   if (this.tileBG && !{ IMG: 1, INPUT: 1 }[elm.nodeName]) {
    this.tileBG(elm, bgPNG[1]);
    this.fix(elm, '', 1);
   } else {
    if (data.tiles && data.tiles.src) {
     this.tileBG(elm, '');
    }
    this.fix(elm, bgPNG[1], 1);
    this.childFix(elm);
   }
  } else {
   if (data.tiles && data.tiles.src) {
    this.tileBG(elm, '');
   }
   this.fix(elm, '');
  }
 } else if ((isPos || isClass) && data.tiles && data.tiles.src) {
  this.tileBG(elm, data.tiles.src);
 }

 if (init) {
  this.hook.enabled = 1;
  elm.attachEvent('onpropertychange', this.hook);
 }
};


IEPNGFix.childFix = function(elm) {
 // "hasLayout" fix for unclickable children inside PNG backgrounds.
 var tags = [
   'a',
   'input',
   'select',
   'textarea',
   'button',
   'iframe',
   'object'
  ],
  t = tags.length,
  tFix = [];
 while (t--) {
  var pFix = elm.all.tags(tags[t]),
   e = pFix.length;
  while (e--) {
   tFix.push(pFix[e]);
  }
 }
 t = tFix.length;
 if (t && (/relative|absolute/i).test(elm.currentStyle.position)) {
  alert('IEPNGFix: Unclickable children of element:' +
   '\n\n<' + elm.nodeName + (elm.id && ' id=' + elm.id) + '>');
 }
 while (t--) {
  if (!(/relative|absolute/i).test(tFix[t].currentStyle.position)) {
   tFix[t].style.position = 'relative';
  }
 }
};


IEPNGFix.hook = function() {
 if (IEPNGFix.hook.enabled) {
  IEPNGFix.process(element, 0);
 }
};


IEPNGFix.process(element, 1);

</script>
</public:component>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值