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);

相關文章
相關標籤/搜索