0

我正在尝试仅添加渐变,.link.box.gradient但在 ie7 中它添加.link.box.gradient.style.box.gradient

<!DOCTYPE html>
<html lang="sv">
    <head>
    <title></title>
        <script src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.4.min.js"></script>
        <script>
            jQuery(function ($) {
                $('head').append("<style>.link.box{height:100px;width:100px;}.link.box.gradient{filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#000000',EndColorStr='#ffffff');}</style>");
            });
        </script>
    </head>
    <body>
        <div class="style box gradient">Gradient (style-tag)</div>
        <div class="link box gradient">Gradient (link-tag)</div>
    </body>
</html>

你也可以在这里看到,http://jsfiddle.net/Zhvpy/ 一件奇怪的事情是当我从 javascript 中移出 .link.box{height:100px;width:100px;} 时,你可以在这里看到http://jsfiddle .net/Zhvpy/1它似乎工作,但我不想搬出去。

为什么会这样?我该如何修复这个错误?

4

1 回答 1

2

删除了原来的错误答案

编辑 1

奇怪的是,这可能是旧版本的 IE 处理某些元素(如<script />)的方式,因此尝试了非 jQuery 解决方案。似乎工作!

编辑 2

将此添加到您的完整脚本中 - 输出更符合 IE8 输出的不同结果

function appendStyle(element, cssObj) {
    //$('#a').append($('<span/>').text(cssObjToText(cssObj)));
    if ($.browser.version == 7) {
        var head = document.getElementsByTagName('head')[0],
            style = document.createElement('style'),
            rules = document.createTextNode(cssObjToText(cssObj));

        style.type = 'text/css';

        head.appendChild(style);

        style.styleSheet.cssText = rules.nodeValue;
    }
    else {
        element.after('<style class="css-finalized">' + cssObjToText(cssObj) + '</style>');
    }
}
于 2010-12-20T18:33:12.537 回答