YUI3在IE8下的几个兼容性问题

最近项目实施,IE11下正常的东西在IE8下出了几个问题,甚至其余浏览器都没有的问题,用户大多使用IE8,没办法,只好为IE8作修正node

其中之一:ajax

YUI3的datatable一显示引起IE8浏览器自动进入兼容性模式并刷新页面,在兼容性模式下,CSS很糟糕,并且datatable彻底浮动着,显示很不成样子浏览器

查了半天,是以下一句话形成的:app

sptable.set('columns', spcolumns.concat(eval(data.header)));ui

这个功能是当用户进行了选择时,要重置表列的内容但这个重置的过程不知道哪里CSS有问题,IE8不兼容this

解决办法每当要重置表列时删除掉表重建好了spa

        sptable.detachAll();
        Y.one('#spectrumlistsection #spectrumtable').setHTML('');
        sptable = new Y.DataTable({
            columns: spcolumns.concat(eval(data.header)),
            scrollable: 'x',
            height: '500px',
            width: '100%',
            data: []
        }).render('#spectrumlistsection #spectrumtable');
        sptable.delegate('click', function(e) {
            var code = this.getRecord(e.target).get('code');
            showPartDetail(code);
        }, 'a.partdetail', sptable);

首先将表上的代理所有清掉,而后把表区域置空,接着建立一个新的datatable,并从新添加代理firefox

第二个问题就很无奈了,脚本里有IE8不支持的CSS选择器代理

var nodelist = bpdiv.one('.search-filter').all('input[type=radio]:checked');调试

这个应该是CSS3的写法,惋惜IE8不支持,只好改为

        var nodelist = bpdiv.one('.search-filter').all('input[type=radio]');
        nodelist.each(function(k, v) {
            if (k.get('checked') && k.get('value') != '') {
                。。。。。。
            }
        });
    

第三个是浮动提示,当鼠标移动到信息上时出现tooltip,tooltip里的数据隐藏在信息的hint span里,若是没有则经过ajax去获取

    var onMousemove = function(e) {
        if (tooltip.get('visible') === false) {
            Y.one('#tooltip').setStyle('opacity', '0');
            tooltip.move([(e.pageX+ 10), (e.pageY + 20)]);
        }

        var node = e.currentTarget;
        var hintnode = node.one('.hint');
        var code = node.one('.partcode').getHTML();
        if (hintnode == null) {
            var configuration = {
                method: 'POST',
                sync: true,
                data: { code: code, method: 'gethint' },
                on: {
                    complete: function(o) {
                        hintnode = Y.Node.create('<span class="hint hidden"></span>');
                        hintnode.setHTML(o.data.responseText);
                        node.appendChild(hintnode);
                    }
                }
            };
            var io = new Y.IO({ emitFacade: true, bubbles: true });
            io.send('Search.ashx', configuration);
        }

        if (hintnode.getHTML() == '') {
            return;
        }
        if (waitingToShow === false) {
            setTimeout(function() {
                Y.one('#tooltip').setStyle('opacity', '1');
                tooltip.show();
            }, 500);

            waitingToShow = true;
            tooltip.setStdModContent('body', hintnode.getHTML());
        }
    }

tooltip的写法仍是从yui官方demo里抄过来的,结果在IE11,firefox以及众多各类浏览器下都正常,恰恰IE8下除了第一排数据显示正常,第二排后面的都不正常

在F12里调试了一下,原来是pageX和pageY的问题,主要是pageY,第二排开始的数据pageY都老大老大的,致使tooltip不知道飞哪里去鸟

这个么,也就不解释了,直接把pageX和pageY改为clientX和clientY就解决了,两个有什么不一样本身理解下就行了

最后一个是小问题,IE8不支持opacity......

把opacity: 0.5下再给IE8加个

    filter: progid:DXImageTransform.Microsoft.Alpha(opacity=50);

相关文章
相关标签/搜索