0

インターネット エクスプローラー (v9.0.8) の Web アプリケーションでのみ発生する奇妙なエラーが表示されます。div でグリッドを複数回インスタンス化しようとすると発生します。

(私はこれが奇妙な状況であることを知っていますが、理由があってやっています。グリッドを複数回設定するとエラーが発生すると言って問題を単純化する方が簡単です)

jfiddle here で問題を再現しました。最初はグリッドが正常に読み込まれることがわかります。しかし、「クリックしてください」ボタンをクリックすると、グリッドが再度セットアップされ、コンソール ウィンドウを確認すると、「SCRIPT65535: Invalid calling object kendo.all.min.js, line 8 character 73742」というエラーが表示されます。

グリッドからデータソースを削除したこのバージョンを試すと、エラーが発生しなくなるため、データソースと関係があります。

このエラーが発生する理由について、誰かがガイダンスを提供できますか?

ありがとう

詳細情報.. このタスクを実行する理由は、これが単一ページのアプリケーションだからです。そのため、別のページに移動すると、画面上のコンテンツが動的にページングされます。リスト ページに戻ったら、セットアップ リストを呼び出してグリッドを更新する必要があります。この例をここに示すために、別の jfiddle を追加しました。[ここをクリックして HTML を更新] をクリックすると、div 内の html がリセットされ、グリッドが設定されます。IE のコンソールを見ると、SCRIPT5022: DOM Exception: NOT_FOUND_ERR (8) エラーが表示されます。

4

1 に答える 1

0

したがって、ソース コードを見ずにこのエラーが発生する理由は推測できますが、グリッドを再挿入する前にグリッドを削除することで、この問題を簡単に回避できます。メソッド内の #grid セレクターで jQuery remove メソッドを使用したところTestRefreshHtml()、すべて正常に機能しました。

function TestRefreshHtml()
{
    alert('in refresh');

    //Remove the grid before initializing a new one
    $('#grid').remove();

 $('#content').html('<div id="grid"/><button id="buttonClickTest">Click Me</Button><button id="buttonClickTest2">Click Me To Refresh HTML</Button>');

SetupGrid();
}

この問題は ID を複数回使用することに関連している可能性があると思いますが、肯定的ではありません。私はあなたの 2 番目のフィドルでこの修正をテストし、グリッドはエラーなしで IE に正常にロードされました。

于 2012-08-28T02:24:23.830 に答える