Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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
Javascript CSS:after在IE8中失败,但仅在添加对jQuery的引用之后_Javascript_Jquery_Html_Internet Explorer 8 - Fatal编程技术网

Javascript CSS:after在IE8中失败,但仅在添加对jQuery的引用之后

Javascript CSS:after在IE8中失败,但仅在添加对jQuery的引用之后,javascript,jquery,html,internet-explorer-8,Javascript,Jquery,Html,Internet Explorer 8,我花了几个小时追踪这个问题,我对我所看到的有点震惊 代码如下: <!DOCTYPE html> <html> <head> <title>Example</title> <style> a:after { content: attr(data-content); } </style&g

我花了几个小时追踪这个问题,我对我所看到的有点震惊

代码如下:

<!DOCTYPE html>
<html>
    <head>
        <title>Example</title>
        <style>
            a:after {
                content: attr(data-content);
            }
        </style>

    </head>

    <body>
        <a id="targetElement" href="http://www.google.com">Hello World</a>
    </body>

    <script type="text/javascript">
        document.getElementById("targetElement").setAttribute("data-content", "moo");
    </script>
</html>

例子
a:以后{
内容:attr(数据内容);
}
document.getElementById(“targetElement”).setAttribute(“数据内容”、“moo”);
上述示例在IE8中正常工作。查看时,“moo”一词会附加到targetElement的末尾:

现在,让我们通过CDN引用jQuery来增加一些趣味性。添加以下代码行:

<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.8.3.min.js"></script>

整个示例如下所示:

<!DOCTYPE html>
<html>
    <head>
        <title>Example</title>
        <style>
            a:after {
                content: attr(data-content);
            }
        </style>

    </head>

    <body>
        <a id="targetElement" href="http://www.google.com">Hello World</a>
    </body>

    <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.8.3.min.js"></script>
    <script type="text/javascript">
        document.getElementById("targetElement").setAttribute("data-content", "moo");
    </script>
</html>

例子
a:以后{
内容:attr(数据内容);
}
document.getElementById(“targetElement”).setAttribute(“数据内容”、“moo”);
刷新IE8并观察单词moo已被删除,但元素保留其数据内容属性:

我。。。我不明白。我以为jQuery应该在跨浏览器兼容性方面帮助我。。。但在这里它是破坏商店


有没有办法解决这个问题?还是四处工作?

好吧!我在聊天中与Joseph Marikle进行了交谈,我们通过大量的例子试图追踪这个问题

我有好消息,也有坏消息。首先是坏消息,我不知道到底发生了什么。好消息是什么?我有工作要做

因此,首先,如果您的元素在设计时在页面上(不是动态生成的),那么只要元素的属性存在,css就应该工作

例如:


这将在运行时修改样式表并添加新的CSS规则。这会导致IE8重新应用逻辑,因为动态元素现在在页面上,它会找到它们并适当地应用css。呜呼!愚蠢的IE8。

是IE8吗?它看起来像IE9。如果你看屏幕截图,你可以看到我已经将浏览器和文档模式设置为IE8和IE8标准。哦,我现在明白了。你试过真正的IE8吗?after和pseudo选择器有很多问题,可能没有被“正确地”模拟……您尝试过另一个版本的jQuery吗?我将下载它并仔细检查以安抚一下,但我在过去使用IE的内置模拟时没有遇到任何问题。如果他们的开发工具没有正确地模拟他们的旧浏览器,那么这似乎就违背了这一点。我过几天就回来汇报。@SeanAnderson你知道我们在谈论微软,对吗?还有,js控制台有什么消息吗?
<!DOCTYPE html>
<html>
    <head>
        <title>Example</title>
        <style>
            a:after {
                content: attr(title);
            }
        </style>
    </head>

    <body>
        <a id="targetElement" title="hi" href="http://www.google.com">Hello World</a>


        <script type="text/javascript">
            document.getElementById("targetElement").setAttribute("title", " moo");
        </script>
        <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/knockout/knockout-2.2.1.js"></script>
    </body>
</html>
node.children('a').attr('data-content', '[' + usedRackUnits + '/' + rackTooltipInfo.rackModel.rows + ']');

var addRule = function (sheet, selector, styles) {
    if (sheet.insertRule) return sheet.insertRule(selector + " {" + styles + "}", sheet.cssRules.length);
    if (sheet.addRule) return sheet.addRule(selector, styles);
};

addRule(document.styleSheets[0], 'li[rel="rack"] > a:after', "content: attr(data-content)");