1

他の誰かのフレームセットでホストされているページがありますが、それはすべて同じドメインにあります (私のコンテンツはサービスを介してサーバーにアップロードされます)。ただし、彼らがフレームセットを使用している理由は別の日の議論です。マークアップは変更されないため、コードで機能する回避策を見つける必要があります。テスト ケースで奇妙な問題を見つけました。解決できれば役立つかもしれません。これはいつものように IE だけの問題です。

ラッパー フレームは次のようになります (引用符で囲まれていない属性で完了です)。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<HTML>
<HEAD>
    <TITLE>foo</TITLE>
    <META content="text/html; charset=UTF-8" http-equiv=Content-Type>
    <META content=IE=EmulateIE8 http-equiv=X-UA-Compatible>
</HEAD>
<FRAMESET frameSpacing=0 cols=8,*,8 frameBorder=1>
    <FRAME id=blackleft src="black.htm" name=blackleft scrolling=no>
    <FRAME id=content marginHeight=0 src="button.html" name=ScormContent marginWidth=0>
    <FRAME id=blackright src="black.htm" name=blackright scrolling=no>
</FRAMESET>
</HTML>

私のテスト ケース ページ (button.html) は次のようになります。

<!DOCTYPE html>
<html><head>
<meta http-equiv=X-UA-Compatible content="IE=Edge">
<title>test</title>
</head>

<body>
<section>
    <a href="javascript:alert('hello world');">
        <button>pressing me works unless you are in a frameset</button>
    </a>
</section>
<section>
    <a href="#" onclick="alert('hello world');">
        <button>Pressing me always works</button>
    </a>
</section>
</body>
</html>

フレームセット内で使用すると、IE9 で最初のボタンが応答しないのはなぜでしょうか。ページをスタンドアロンで実行すると、クリック可能なボタンが表示されます。

doctypes と x-ua 互換のトリックの両方について多くのことを読むと、これまで以上に混乱してしまい、何をすべきかわかりません。前述のように、フレームセットのマークアップを変更することはできません。そのため、コードが機能するために (これは、ページがナビゲートされたときに保存するデータを通信するために beforeunload イベントや unload イベントなどに依存しています。これは変更されません)。フレームセットでの実行時に機能します)。私の直感は、ボタンの例が根本的な問題に近づいていることを示しており、インターネットはそれが x-ua 互換タグとクワークモードに関係していることを示していますが、この件に関する多くの読書は私を捕らえていません解決策はまだあります...たとえば、IE9を(たとえば)IE7互換モードに強制することを選択した場合、すべてのページのスタイリング作業が窓の外に出ます。

4

1 に答える 1

0

IEには独自のiframeセキュリティがあります:

SECURITY属性は、URLでのjavascript、vbscript、およびaboutプロトコルの使用を制限します。たとえば、制限されたフレームまたはiframeでは、ソースファイルは次のコードを実行できません。

<a href="javascript:alert('Disallowed in restricted FRAME or IFRAME!');">JavaScript Link</a>
于 2012-10-24T02:16:13.153 に答える