var ImageReplace = {
replaceImage: function (element) {
// 取得元素
element = ADS.$(element);
// 创建图像元素
var image = document.createElement('img');
// 当图像载入成功后再添加span和类名
ADS.addEvent(image, 'load', function () {
var s = document.createElement('span');
// 将span添加为元素的子元素
ADS.prependChild(element, s);
// 创建必要的title属性
if (!element.getAttribute('title')) {
var i, child;
var title = '';
// 循环遍历子元素以组合title属性
for (i = 0; child = element.childNodes[i]; i++) {
if (child.nodeValue) {
title += child.nodeValue;
}
}
element.setAttribute('title', title);
}
// 修改类名以标明
// 变更并应用css
ADS.addClassName(element, 'advancED');
});
// 载入图像
var styleSheet = ADS.getStyleSheets('advancED.css')[0];
if (!styleSheet) {
return;
}
var list = styleSheet.cssRules || styleSheet.rules;
if (!list) {
return;
}
var j, rule;
for (j = 0; rule = list[j]; j++) {
// 查找规则
// 可能是#element-id span
// 或者 .advancED#element-id span
// 或者MSIE中的, .advancED#element-id SPAN
// 其中element-id是传递到方法中的参数
if (rule.selectorText.indexOf('#' + element.id) !== -1
&& rule.selectorText.indexOf('.advancED') !== -1
&& rule.selectorText.toUpperCase().indexOf(' SPAN') !== -1) {
// 使用正则表达式: /url\(([^\)]+)\)/
// 在css规则中查找url
var matches = rule.style.cssText.match(/url\(([^\)]+)\)/);
// matches[1]中包含的是与正则表达式
// 匹配的捕获圆括号中的值
if (matches[1]) {
image.src = matches[1].replace(/"/g, '');
break;
}
}
}
},
run: function (elem) {
var that = this;
ADS.addEvent(window, 'load', function () {
that.replaceImage(elem);
});
}
};
ImageReplace.run('advancedHeader');