JQuery tablesorter pager plugin doesn't work properly with IE11 in Edge mode

限于喜欢 提交于 2019-12-03 04:51:44

It seems that IE11 have a problem with his userAgent. A turnaround is to change clearTableBody function (working in jquery.tablesorter-2.0.3.js) like this :

this.clearTableBody = function (table) {
    //if ($.browser.msie) {
        function empty() {
            while (this.firstChild) this.removeChild(this.firstChild);
        }
        empty.apply(table.tBodies[0]);
    //} else {
    //    table.tBodies[0].innerHTML = "";
    //}
};
Christian Davén

This is in a way due to Internet Explorer 11 having a user agent string that doesn't include "MSIE", so jQuery doesn't identify it properly (see this question).

But really, the TableSorter Pager code doesn't need to know which browser is running the code. Change the function clearTableBody to leverage jQuery's cross-browser implementation instead:

this.clearTableBody = function(table) {
    $(table.tBodies[0]).empty();
};

I have tested this in IE8, IE9, IE11, Chrome 31 and Firefox 24.

(And just now, I found a GitHub repo with a fork of TableSorter that has possibly fixed this already: https://github.com/Mottie/tablesorter)

We have the same problem. I've submitted a ticket directly to Microsoft.

Wait... and see...

https://connect.microsoft.com/IE/feedback/details/806279/bug-when-sorting-with-a-jquery-plugin

One simple soltion - change the line in jquery.tablesorter.js from if($.browser.msie) to:

if(/msie/.test(navigator.userAgent.toLowerCase()) || window.navigator.userAgent.indexOf("Trident/7.0") > 0) works for me.

/msie/.test(navigator.userAgent.toLowerCase()) detects IE version 10 or below. window.navigator.userAgent.indexOf("Trident/7.0") > 0 detects IE 11.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!