获得伪元素:在IE 7之前/之后

时间:2012-08-21 09:54:13

标签: javascript jquery css wordpress internet-explorer-7

我试图让这些在IE 7中工作,但我遇到了问题。我在标题中下载并包含了jQuery插件,如下所示:

<!--[if lte IE 7]>
<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/js/jquery.pseudo.js"></script>
<![endif]-->

但它仍无效。

以下是jQuery插件的代码..

(function($){

    var patterns = {
        text: /^['"]?(.+?)["']?$/,
        url: /^url\(["']?(.+?)['"]?\)$/
    };

    function clean(content) {
        if(content && content.length) {
            var text = content.match(patterns.text)[1],
                url = text.match(patterns.url);
            return url ? '<img src="' + url[1] + '" />': text;
        }
    }

    function inject(prop, elem, content) {
        if(prop != 'after') prop = 'before';
        if(content = clean(elem.currentStyle[prop])) {
            $(elem)[prop == 'before' ? 'prepend' : 'append'](
                $(document.createElement('span')).addClass(prop).html(content)
            );
        }
    }

    $.pseudo = function(elem) {
        inject('before', elem);
        inject('after', elem);
        elem.runtimeStyle.behavior = null;
    };

    if(document.createStyleSheet) {
        var o = document.createStyleSheet(null, 0);
        o.addRule('.dummy','display: static;');
        o.cssText = 'html, head, head *, body, *.before, *.after, *.before *, *.after * { behavior: none; } * { behavior: expression($.pseudo(this)); }';
    }

})(jQuery);

我认为可能与必须将$字符更改为jQuery有关,因为我使用的是WordPress,而WP保留$字符作为原型,但那并没有'也工作;它停止了JS错误,但它仍然无效。

2 个答案:

答案 0 :(得分:0)

为什么不使用ie7-js(一个JavaScript库使MSIE表现得像符合标准的浏览器)?

它会修复:before:aftermany other issues

答案 1 :(得分:0)

Modernizr还支持IE7中的:before:after psuedo元素以及许多其他浏览器。来自docs

  

我们支持IE6 +,Firefox 3.5 +,Opera 9.6 +,Safari 2 +,Chrome。在移动设备上,我们支持iOS的移动Safari,Android的WebKit浏览器,Opera Mobile,Firefox Mobile,虽然我们仍在进行更多测试,但我们相信我们支持Blackberry 6 +。