4

私はしばらくの間、IE9でしか得られないエラーと戦ってきました。jQueryとjQuery-UIのバージョンによって、エラーメッセージは少し異なります。jquery1.8.3およびjquery-ui1.8.24では、次のエラーメッセージが表示されます。

SCRIPT5009:「配列」は未定義です

ただし、jquery1.7.xおよびjquery-ui1.7.xでは、次のエラーメッセージが表示されます。

SCRIPT5009:「オブジェクト」は未定義です

問題のあるページのコードは次のとおりです。

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.8.24/jquery-ui.min.js"></script>
<title></title>
    <script type="text/javascript">
        $(document).ready(function() {
            $("#dialog").dialog();
        });
    </script>
</head>
<body>
    <div id="dialog">
        <iframe id="iframe1" src="jqtest2.htm"></iframe>
    </div>
</body>
</html>

そして、これがそのページのiframeのコードです:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.js"></script>
</head>
<body>
</body>
</html>

互換表示モードを使用するIE9、Google Chrome、またはFirefoxでこれらのエラーメッセージが表示されません。

iframe内にjqueryが含まれているのは原因のようです。

4

2 に答える 2

5

これが私の問題を解決する方法です。iframe src属性を空のままにし、dialog()を呼び出した後でのみjqueryを使用して初期化しました。おそらく、この方法でIEはiframeコンテンツを少し後でロードしますが、その場合、問題は発生しません。動作する変更されたコードは次のとおりです。

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.8.24/jquery-ui.min.js"></script>
<title></title>
    <script type="text/javascript">
        $(document).ready(function() {
            $("#dialog").dialog();
            $("#iframe1").attr("src", "jqtest2.htm");
        });
    </script>
</head>
<body>
    <div id="dialog">
        <iframe id="iframe1" src=""></iframe>
    </div>
</body>
</html>

iframeのhtmlファイルは同じままでした。

于 2013-02-19T19:37:21.447 に答える