1

Web サイトに次の html があります。「ApplicationName_ButtonDiv」、「ApplicationName_Button」などで指定されたスタイルは、Chrome と Firefox では正しく適用されますが、IE8 では適用されません。

<div class="CommandButtonContainer">
   <div class="ApplicationName_ButtonDiv">
      <button id="changeName" type="button" class="ApplicationName_Button"onclick = "javascript: window.location='/Application/Customer/EditName';" >
         <a href="#" class="ApplicationName_Button">
            <span>
               <span>Change Name</span>
            </span>
         </a>
      </button>
   </div>
</div>

1) IE8 でのみページにエラーがあります。

Web ページのエラーの詳細

ユーザー エージェント: Mozilla/4.0 (互換性あり; MSIE 8.0; Windows NT 5.1; Trident/4.0; chromeframe/18.0.1025.162; InfoPath.1; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322 ; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E) タイムスタンプ: 2013 年 8 月 11 日 (日) 10:06:22 UTC

メッセージ: 許可が拒否されました行: 5514 文字: 3 コード: 0 URI: 削除されたサイトの名前/publishmode.xxxjs

これは次のことに関係しているようです。

5513  contents: function( elem ) {
5514      return jQuery.nodeName( elem, "iframe" ) ?
5515          elem.contentDocument || elem.contentWindow.document :
5516          jQuery.makeArray( elem.childNodes );
5517  }

2) IE 開発者ツールで html を表示すると、ソースを表示したときとは少し異なりますが、重要なことは次のとおりです。

<div class="CommandButtonContainer">
   <div class="ApplicationName_ButtonDiv">
      <button class="ApplicationName_Button" id="changeName" onclick="javascript: window.location='/Application/Customer/EditName';" type="button">
         <a class="ApplicationName_Button" href="#"/>
         <span>
            <span>
           Text - Change Name
            Text - Empty Text Node (italics)
         </a/>
      Text - Empty Text Node (italics)

アンカー タグが閉じられ、スパン タグがラップされていません。スタイリングは、内部に 2 つのスパンを持つアンカーがあることに依存しています。これは、ツールを使い始めたばかりなので、ツールの癖かもしれません。

この問題の原因について何か考えがある場合は、お知らせください。ありがとうジョン

4

2 に答える 2

1

IE の開発ツールが予想とは異なるレイアウトを表示する場合は、通常、コードに HTML エラーがあり、IE のパーサーが少し詰まることを示しています。W3C の HTML Validatorにアクセスして、報告されたエラーを修正します。

これは、欠落しているスタイルの原因となる可能性もあります。実際に動かしてみないとわかりませんが、運が良ければその問題も解決するでしょう。そうでない場合は、関連する CSS を表示して、さらにサポートを得る必要があります。(質問を編集して含めます)。

<button>特に IE8 のような古いブラウザでは、ボタンのデフォルト スタイルはクロスブラウザで完全に一貫していないため、CSS は特にタグに関連している可能性があります。CSS の「リセット」スタイルシートを使用して、このようなブラウザの違いを正規化することを検討してください。

あなたはJavascriptpermission deniedエラーに言及しています。ボタンのスタイルが適切に設定されていないことに関連しているとは思いませんが(正直なところ、指定したコードの量が限られているため、それを判断することは不可能です)、それでも明らかに問題であり、何かを壊しているでしょうそうでなくても、あなたのサイト。

iframeパーミッションの問題は、JS コードが要素のコンテンツにアクセスしようとすることです。パーミッション エラーが発生する場合は、iframe 内のページがメイン サイトのドメインとは異なるドメインのものであるとブラウザーが認識しているため、セキュリティ上の理由から、コードでページを変更できないことを意味します。

あなたのサイトでこの iframe が何であるかはわかりませんが、それが何であれ、その中で機能するコードは機能しないようです。

IE8 のセキュリティ モデルは、この点ではかなり優れていますが、いくつかの癖があります。特に、空のページ (つまり、デフォルトでabout:blankURL に設定されているページ) が別のドメインからのものと見なされる可能性があるという点で、多くの人が注目しています。この場合、明らかに問題ではありませんが、ブラウザはそれを認識できるほど賢くありません。それが問題である場合は、コードをデフォルトとして使用するのではなく、サイトからダミー ページをロードすることで回避できabout:blankます。

他にも発生している可能性のある癖がありますが、質問から得た詳細からすると、それが最も可能性が高いようです.

それが役立つことを願っています。

于 2013-08-11T13:17:00.163 に答える
1

ボタンを a タグにします。

あなたが持っている:

<button id="changeName" type="button" class="ApplicationName_Button"onclick = "javascript: window.location='/Application/Customer/EditName';" >
         <a href="#" class="ApplicationName_Button">
            <span>
               <span>Change Name</span>
            </span>
         </a>
      </button>

それをただ作ってみてください:

<a id="changeName" class="ApplicationName_Button" type="button" onclick="javascript: window.location='/Application/Customer/EditName';">Change Name</a>

それがうまくいくかどうかを確認してください...そのセクションだけでは、あなたのやり方は本当に意味がありません. また、スパン内にスパンがあります...なぜですか?

于 2013-08-11T11:59:40.300 に答える