4

悪いLI要素を持つサーバーによって生成されたページがあり、2つの終了liタグがあります

<li>Whatever</li></li>

すべてのjQuery操作はFirefoxで正常に機能しますが、IE(7および8)では機能しません。関数を開始する前に重複を削除したいのですが</li>、どうすればよいですか?

4

2 に答える 2

4

論理的な意味に反するブラウザを使用していない限り、クライアント経由で修正することはできません。jQuery は生の HTML ではなく DOM を制御するため、スクラブされた壊れたタグを編集することはできません。サーバー側のスクリプトを修正するだけです。

ハックで恐ろしい、ひどい JS ソリューションが本当に必要な場合は、そのページが読み込まれた後に AJAX でページ自体を要求し、(無限ループを避けるために) ページから AJAX 呼び出しを削除し、壊れた要素を削除してから、その HTML を読み込むことができます。新しいウィンドウで。絶対にしないでください。

于 2012-06-27T21:05:59.333 に答える
1

もちろん、可能であれば、ページを生成するコードを修正する必要があります。

それが不可能な場合は、前途多難です。マークアップは、何かを行う前に解析されるため、修正することはできません。そのため、ブラウザが壊れたマークアップから生成したものを修正する必要があります。

ブラウザーごとに間違ったコードを処理する方法が異なるため、Internet Explorer の現在のすべてのバージョン (7、8、9、10、場合によっては 6) を含め、入手できるすべてのブラウザーをテストする必要があります。一度にインストールできる IE のバージョンは 1 つだけなので、これは大変なことです。幸いなことに、新しいバージョンの開発者ツールを使用して古いバージョンをシミュレートできますが、それでも 100% 正確なエミュレーションではありません。

一部のブラウザーは余分な終了タグを無視する場合があり、一部のブラウザーは余分なリスト要素を追加する場合があります。各ブラウザーがマークアップから生成したものを処理するコードを作成し、要素を修正する必要があります。

于 2012-06-27T21:18:20.380 に答える