Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在IE7中添加带有javascript-bug的CSS渐变_Javascript_Css_Selector_Explicit_Internet Explorer 7 - Fatal编程技术网

在IE7中添加带有javascript-bug的CSS渐变

在IE7中添加带有javascript-bug的CSS渐变,javascript,css,selector,explicit,internet-explorer-7,Javascript,Css,Selector,Explicit,Internet Explorer 7,我试图只在.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.

我试图只在
.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>

jQuery(函数($){
$('head').append(“.link.box{height:100px;width:100px;}.link.box.gradient{filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='.#000000',EndColorStr='.#ffffff');}”);
});
渐变(样式标记)
渐变(链接标签)
你也可以在这里看到, 一件奇怪的事情是,当我从javascript中移出.link.box{height:100px;width:100px;}时,正如您在这里看到的,它似乎可以工作,但我不想移出


为什么是这样?如何修复此错误?

删除了原始错误答案

编辑1

奇怪-这可能是旧版IE处理某些元素(如
)的方式,所以尝试过。 似乎有用

编辑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>');
    }
}
函数appendStyle(元素,cssObj){
//$('#a').append($('').text(cssObjToText(cssObj));
如果($.browser.version==7){
var head=document.getElementsByTagName('head')[0],
style=document.createElement('style'),
规则=document.createTextNode(cssObjToText(cssObj));
style.type='text/css';
头。附属物(样式);
style.styleSheet.cssText=rules.nodeValue;
}
否则{
元素后(“”+cssObjToText(cssObj)+“”);
}
}

我认为IE7不支持多个类上的选择器。IE7及以上版本支持多个类选择器。因此,当他从Javascript中删除.link.box声明时,css会工作。请尝试下面我的建议-IE7确实支持多个类选择器:@lnrbob,我知道多个类是如何工作的。很抱歉,在我的IE7中,它仍然在两个标记上显示渐变=(感兴趣-在这里查看虚拟机,你是对的。在“IE7标准”模式中记下IE7和IE8的另一个区别直接方法-这对我有效-如果对你无效,那么我放弃:(是的,这很有效!但我不知道如何在我的脚本中将其连接在一起。呸-这很棘手!我做了更多的研究并修改了我第一次编辑的代码!我不认为document.write是一个选项,具有您编写的javascript的复杂性(看起来很棒,顺便说一句:D)。因此,请尝试此链接:。基本上对于IE7,在修改内容之前添加元素!!真奇怪-但看起来很有效。我相信您将能够将此链接与脚本集成:)