javascript - IE8 iframe 无法成功运行 JS/CSS 代码

标签 javascript jquery internet-explorer iframe slickgrid

我目前正在编写一个日历应用程序,我通过 iframe 将其嵌入到网站中,但我在 Internet Explorer 中遇到了一个错误

    function BuildListView(startday, l, events, config){
        var cc = '<div id="myGrid" style="width:95%;height:95%;"></div>';
        var html = [];
        html.push(cc);
        html.push('<link rel="stylesheet" href="../slickgrid/slick.grid.css" type="text/css" media="screen" charset="utf-8" /> ');
        html.push('<link rel="stylesheet" href="../slickgrid/css/smoothness/jquery-ui-1.8.2.custom.css" type="text/css" media="screen" charset="utf-8" /> ');
        html.push('<link rel="stylesheet" href="../slickgrid/examples/examples.css" type="text/css" media="screen" charset="utf-8" /> ');

        html.push('<script language="JavaScript" src="../slickgrid/lib/jquery.event.drag-2.0.min.js"></script>');
        html.push('<script language="JavaScript" src="../slickgrid/slick.grid.js"></script>');
        gridcontainer.html(html.join(""));
        html = null;

        var grid;

        var columns = [
            {id:"event", name:"Event", field:"event",width:300},
            {id:"start", name:"Start", field:"start",width:175},
            {id:"finish", name:"Finish", field:"finish",width:175},
            {id:"location", name:"Location", field:"location",width:200}
        ];

        function sortByStart(a, b) {
            var x = a.start.toLowerCase();
            var y = b.start.toLowerCase();
            return ((x < y) ? -1 : ((x > y) ? 1 : 0));
        }

        var options = {
            enableCellNavigation: false,
            enableColumnReorder: false,
            rowCssClasses: function(item) {
                // if a task is 100% done then its row gets an additional CSS class
                return (item.event == "Task 0") ? 'complete' : '';
            }

        };

            $.getJSON("../cal.php", function(json) {
                var data = [];
                var i=0;
                $.each(json.events, function(index, event) { 
                        data[i++] = {
                            event: event[1],
                            start: event[2],
                            finish: event[3],
                            location: event[9],
                        };

                });
                data.sort(sortByStart);

                $.each(data,function(index, value){
                    value.start = (new Date(value.start)).toUTCString();
                    value.finish = (new Date(value.finish)).toUTCString();
                })


                grid = new Slick.Grid($("#myGrid"), data, columns, options);
             });



    }

我知道,这很脏,它可以在 FF/Chrome 中自行加载并在 iframe 中正常工作,但在 IE 中最终调用

grid = new Slick.Grid($("#myGrid"), data, columns, options);

正在引发问题。当我注释掉 CSS 文件时也会发生同样的事情,因此我假设这是加载后 CSS 错误。什么会阻止 iframe 中的 CSS 被更改?

最佳答案

您检查过您的 DOCTYPE 吗?某些 DOCTYPE 在 FF/Chrome 中触发标准模式,但在 IE8 中触发怪异模式。 SlickGrid 在 Quirks 模式下不起作用(毫不奇怪!)。我刚刚通过更改解决了一个非常相似的问题:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

对此:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

See this article for more info.

关于javascript - IE8 iframe 无法成功运行 JS/CSS 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4804513/

相关文章:

javascript - 在 Safari 和 <IE9 上模拟 window.performance.timing

javascript - 根据值获取选择选项文本

javascript - IE8 - IsArray() 获取预期的错误对象

internet-explorer - IE 中的 GIF 动画停止

javascript - Jquery 插件 - 内联编辑..如何?

javascript - 如何发送带有公式字段的handsontable

javascript - 用javascript/jquery显示时差

javascript - 键/值对的 Javascript 数组在 C# 中的等效项是什么

javascript - 获取li内子标签的html内容

javascript - 动态附加的元素与页面加载时插入的同级元素的位置不完全相同