2009-07-27 17 views

答えて

0

私は最近同様の挑戦をして、次のコードを作りました。このコードはIEで動作しますが、Chromeのfreeze headerの幅に問題があります。

とにかく、助けてください。

<script type="text/javascript"> 
$(document).ready(function(){ 
    // Replace 'NameOfList' with the name of the SharePoint list 
    var $header = $("table[summary^='NameOfList']:first > tbody > tr.ms-viewheadertr"); 
    var headertop = $header.offset().top; 

    // Replace 'NameOfColumn' with the name of the column that you would like to freeze 
    var $fzCol= $("tr.ms-viewheadertr th:contains('NameOfColumn')"); 

    // IE has iFrame, Chrome doesn't have, so the 'n-th' count of the column is different in IE than in Chrome 
    if($fzCol.siblings().eq(0).children().eq(0).prop("tagName") == "IFRAME"){ var shift = 0} else { var shift = 1}; 
    var nfzCol=$fzCol.index()+shift; 

    var $mcol=$("table[summary^='NameOfList'] > tbody > tr:not(.ms-viewheadertr) > td:nth-child("+nfzCol+")"); 
    var colleft=$mcol.eq(0).offset().left; 

    $(window).scroll(function(){ 
    var windowtop = $('body').scrollTop(); 
    if(windowtop > headertop){ 
     $header.css({"position":"absolute", "top":windowtop}); 
    } else { 
     $header.css({"position":"static", "top":"0px"}); 
    } 

    var windowleft = $('body').scrollLeft(); 
    if (windowleft > colleft){ 
     $mcol.css({"position":"relative", "left": windowleft-colleft}); 
    } else { 
     $mcol.css({"position":"static", "left":"0px"}); 
    } 
    }); 
} 

関連する問題