1

私は tablesorter を使用しており、カスタム ソート パーサーを作成しようとしています。パーサーは Firefox ではうまく機能しますが、Internet Explorer では完全に失敗します。パーサーが一方では機能するのに、他方では機能しないのはなぜですか??

4

2 に答える 2

1

tablesorter のフォークでtextContent、IE9 (そしてもちろん他のすべての最新ブラウザー) での使用がはるかに高速であることもわかったので、これを自動的に行うように内部コーディングを変更しました。

if (config.supportsTextContent) {
    text = node.textContent; // newer browsers support this
} else {
    text = $(node).text();
}

また、特定の列の関数を取得および/または追加できるtextExtractionオプションにいくつかの改善を加えました。cellIndex

于 2013-01-19T02:18:49.583 に答える
0

カスタム パーサーを作成する場合、tablesorter は次の関数を使用します: getElementText(config, node)

getElementText は表のセルからテキストを取得しようとしますが、一部の表のセルには html タグも含まれる場合があります。セルの [td] タグに他の html タグ ([span] や [img] など) が含まれていると、IE で問題が発生します。これは、IE がサポートする innerText だけでなく、セルのすべての innerHTML (外部タグを含む) を関数が取得するためです。

getElementText 関数は、セル内の html タグを無視して、Firefox がサポートする (自明の) textContent を取得するため、Firefox でうまく機能します。関連する質問を参照してください: jQuery tablesorter: custom html image tag sorter/parser

この問題を解決する最善の方法は、ブラウザーでサポートされているもの、innerText または textContent に基づいて、最初に tablesorter がセル テキストを適切に取得するようにすることです。クリングの答えは、私を正しい道に導くのに役立ちました: How to clear tags from a string with JavaScript

tablesorter.js ファイルを開き、以下に示す getElementText(config, node) の部分を変更します。また、この提案を tablesorter の作成者に提出しました。

innerHTML を innerText に置き換えます。

if (config.supportsTextContent) {
    text = node.textContent;
} else {
    if (node.childNodes[0] && node.childNodes[0].hasChildNodes()) {
        text = node.childNodes[0].innerText;
    } else {
        text = node.innerText;
    }
}
于 2013-03-06T17:01:13.107 に答える