1

IE8 が CSS セレクターをドロップしているように見える状況に遭遇しています。これは信じがたいことですが、何が起こっているのかわかりません。

.css ファイルには、次の宣言があります。

#srp tr.objectPath.hover td {
    border-top:none;
}

ただし、組み込みの開発者ツールを使用して IE8 でファイルを検査すると、宣言は次のように変更されます。

#srp TR.hover TD {
    border-top:medium none;
}

大文字と小文字の変更やルールの言い直しは気にしませんが、「.objectPath」を削除することは、意図したよりも広い範囲でルールを対象としているため、実際の問題です。

このページは Quirks モードであり、そのままにしておく必要があることに注意してください。

何が起こっているのですか?

ありがとう!

4

3 に答える 3

2

Quirks モードでは、IE 8 はページをレンダリングし、IE 5.5 がレンダリングするように DOM を扱います。これが、互換モードの IE 8 が複数のクラスを無視する理由です。これは IE 8 のバグではありません。ページを適切に解析してレンダリングするには、標準モードでページをレンダリングするように適切な DOCTYPE を設定する必要があります。

于 2010-01-08T07:18:34.507 に答える
1

tr.objectPath.hoverhover疑似クラスを使用しようとしている場合、構文は正しくありません。正しい構文はコロン (つまりtr.objectPath:hover) です。マシンがコードを読み取るとき、のクラス名objectPathとして読み取りますが、古いクラス名を取り除き、クラスに置き換えます(実際にそのクラスに属する要素があるかどうかは関係ありません)。 . また、この場合、 のインスタンスの子を参照して何をしようとしているのかわかりません。trhoverhover:hover

実際hoverにクラス名として使用していて (コードを読んでいる人を混乱させる可能性があるため、お勧めしません)、 CSS をとクラスの両方tdである a の子に適用したい場合は、両方のクラスの要素に対して新しいクラスを作成し、代わりにそれを使用することを検討してください (つまり. )。trobjectPathhover#srp tr.newClass td

編集:この問題をさらに調べると、これは (まだ) IEの (別の)既知のバグのようです。IETester でテストしたところ、IE のすべてのバージョンに存在するようです。あなたの側で私が見ることができる唯一の解決策は、非常に面倒です:

まず、他にアクセスできないため、CSS で JavaScript を使用する必要があります。これは可能ですが、非常にバグが発生しやすくなります。

次に、複数のクラス名をパラメーターとして受け取ることができる getElementsByClass 関数をその JavaScript で作成する必要があります。これは非常に大きなコードの塊になります

最後に、このコードをIE のみが使用するように指定して、他のブラウザーのユーザーがこれらすべての潜在的な問題に対処する必要がないようにすることをお勧めします。

明確にするために、これを行うことはお勧めしません。代わりに、HTML ソース コードにアクセスできる誰かに連絡することをお勧めします (あなたが実際に彼らと協力して作業していると仮定しますobjectPathhover) tr。彼らのtd子供たちに。

于 2009-11-02T21:02:16.327 に答える
0

宣言に間違った構文があるようですが、何をしているのかを正確に伝えるのは難しいです。ホバー状態に一致させようとしていますか、それとも実際に 'hover' と呼ばれるクラスがありますか?

州に行く場合は、試してください:

#srp tr.objectPath:hover td {
    ...
}

別のクラスがある場合は、2 つの別個の宣言が必要になる場合があります。

#srp tr.objectPath td {
    ...
}

#srp tr.hover td {
    ...
}
于 2009-11-02T21:04:01.543 に答える