2013-09-23 9 views
6

2つの単純なhtmlページを作成しました。そのうちの1つにiframeが含まれ、2つ目のページが最初のページのiframeに読み込まれます。 最初のページは、あなたが「SHOW」と「HIDEという名前の最初のページに2つのリンクがあります見ることができるようにhttp://quatorze.atspace.co.uk/Webdev/shared/ffbug_files/ffbug3.html:iframe内のコンテンツにtarget css pseudoclassが正しく設定されていない場合

<!DOCTYPE HTML> 
<html> 
<head> 
    <meta charset="UTF-8"> 
    <title>:target bug in firefox</title> 
    <style type=text/css> 
    div { 
     width: 140px; 
     height: 140px; 
     border: 2px solid; 
     margin: 6px; 
     padding: 10px; 
     background-color: skyblue; 
     float: left; 
    } 
    div:target { 
     background-color: silver; 
    } 
    </style> 
</head> 
<body> 
    <div id="div1"><a href="#div1">DIV 1</a></div> 
    <div id="div2"><a href="#div2">DIV 2</a></div> 
</body> 
</html> 

に位置していますインラインフレームにロードされているhttp://quatorze.atspace.co.uk/Webdev/shared/ffbug1.html

<!DOCTYPE HTML> 
<html> 
<head> 
    <meta charset="UTF-8"> 
    <title>:target bug in firefox</title> 
    <style type=text/css> 
    iframe:target { 
     display: none; 
    } 
    ol { 
     max-width: 480px; 
     font-family: sans-serif; 
    } 
    li { 
     margin: 8px; 
    } 
    span { 
     color: red; 
    } 
    </style> 
</head> 
<body> 
    <div id="div0"> 
     <p><a href="#if">HIDE</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#div0">SHOW</a></p> 
     <iframe id="if" src="ffbug_files/ffbug3.html" width="400" height="200"></iframe> 
     <ol>In Firefox click links on this page in following order: 
      <li>Click "DIV 1". First div gets targeted and its background turns silver;</li> 
      <li>Click "HIDE". Iframe gets targeted and its "display" property is set to "none";</li> 
      <li>Click "SHOW". Iframe is no longer targeted and its "display" property is reset to "inline";</li> 
      <li>Now click "DIV 2". Second div gets targeted and its background turns silver. First div is no longer targeted and its "background-color" must be reset to "skyblue" but <span>it remains silver</span>;</li> 
      <li>Click "DIV 1". First div gets targeted, its background <span>was already silver</span>, second div is no longer targeted and its "background-color" is reset to "skyblue".</li> 
      <li>Click "DIV 2". Second div gets targeted, its background turns silver, first div is no longer targeted, its "background-color" is reset to "skyblue".</li> 
      <li>Click "HIDE". Iframe gets targeted and its "display" property is set to "none";</li> 
      <li>Click "SHOW". Iframe is no longer targeted and its "display" property is reset to "inline";</li> 
      <li>Now click "DIV 1". First div gets targeted, its background turns silver. Second div is no longer targeted and its "background-color" must be reset to "skyblue", but <span>it remains silver</span>. 
     </ol> 
    </div> 
</body> 
</html> 

2ページ目にあります"

"SHOW"はdivを含むことを示し、 "HIDE"はiframeにreffersを返します。

iframeの「表示」プロパティは、ターゲットになると「なし」に設定されます。

iframeに読み込まれた2ページ目に2つのdivが含まれています。各divにはそのdivを参照するリンクがあります。

各divのCSSルールセットは、「skyblue」から「silver」を対象とするときに背景色を変更します。

Firefoxでは次の順序で最初のページ上のリンクをクリックしてください:

  1. クリックして "DIV 1"。最初の部門は目標を達成し、その背景はシルバー シルバー;

  2. 「非表示」をクリックします。 Iframeがターゲティングされ、その "display"プロパティが に "none"に設定されています。

  3. 「表示」をクリックします。 Iframeはもはやターゲットに設定されず、その "表示" プロパティは "インライン"にリセットされます。

  4. 「DIV 2」をクリックします。 2番目の部門がターゲットとなり、その背景はシルバー となります。最初のdivはターゲティングされなくなり、その背景色の を「skyblue」にリセットする必要があります(これはChromeで実際に起こります)。 でも銀色のままです。

+0

私は仲間にとってうまくいくようです。私はFireFox 24を使用しています。 – Harry

+0

私のオペレーティングシステムはWindows XP SP3です。多分XPでは動作しません。他に何を考えなければならないのか分かりません。 – user2227119

+0

いいえ、私はオペレーティングシステムがここで問題になるはずはないと思います。 FireFoxのどのバージョンを使用していますか?最新のものにアップグレードしてください。 – Harry

答えて

-1

これはあなたが求めている答えではないかもしれませんが、実用的なものです。

あなたのプロジェクトでブラウザ間の互換性を達成しようとするならば、各ブラウザがうまく機能するかどうかを探してそれを使用する必要があります。

スタイルが適切に適用されているように見えるので、あるブラウザでは正しく機能し、別のブラウザでは正しく機能しない場合、両方で機能する共通のアプローチを見つけるためにエネルギーをかけるだけです。

Firefoxがこのバグを修正したとしても、来てもらうために訪問者を引き続き訪問させることになります。

-1

jqueryを試してみてください。うまくいくと思います。私はあなたのコードでクロームを実行しますが問題ありません。 firefoxで問題が発生したと表示され、div1、div2が青にリセットされて表示されます。あなたは、あなたが助けてくれることを願っています。

関連する問題