1. ホーム
  2. jquery

[解決済み] jQuery .load()呼び出しが、読み込まれたHTMLファイル内のJavaScriptを実行しない

2023-06-09 21:59:37

質問

これはSafariに関連した問題のようです。 Mac で 4 つ、Windows で 3 つ試してみましたが、まだうまくいきません。

外部の HTML ファイルを読み込んで、埋め込まれている JavaScript を実行させようとしています。

私が使おうとしているコードはこれです。

$("#myBtn").click(function() {
    $("#myDiv").load("trackingCode.html");
});

trackingCode.html は以下のようになります (今はシンプルですが、これが動くようになったら/なったら拡張する予定です)。

<html>
<head>
    <title>Tracking HTML File</title>
    <script language="javascript" type="text/javascript">
        alert("outside the jQuery ready");
        $(function() {
            alert("inside the jQuery ready");
        });
    </script>
</head>

<body>
</body>
</html>

IE (6 & 7) と Firefox (2 & 3) では、両方の警告メッセージが表示されています。しかし、Safari (私が関心を持つ必要がある最後のブラウザ - プロジェクトの要件 - 炎上はご勘弁ください) ではメッセージを見ることができません。

の JavaScript を Safari が無視する理由について、何かご意見はありますか? trackingCode.html ファイル内の JavaScript を Safari が無視する理由について、何か思い当たることはありますか?

最終的には、JavaScriptオブジェクトをこの trackingCode.html ファイルにJavaScriptオブジェクトを渡してjQuery readyの呼び出しで使用できるようにしたいのですが、この道を行く前にすべてのブラウザでこれが可能であることを確認したいと思います。

どのように解決するのですか?

html、head、body タグを含む HTML ページ全体を div に読み込んでいます。 読み込みを行い、読み込んだ HTML の中にオープニング スクリプト、クロージング スクリプト、および JavaScript コードだけがある場合はどうなりますか?

ここにドライバページがあります。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>jQuery Load of Script</title>
        <script type="text/javascript" src="http://www.google.com/jsapi"></script>
        <script type="text/javascript">
            google.load("jquery", "1.3.2");
        </script>
        <script type="text/javascript">
            $(document).ready(function(){
                $("#myButton").click(function() {
                    $("#myDiv").load("trackingCode.html");
                });
             });
         </script>
    </head>
    <body>
        <button id="myButton">Click Me</button>
        <div id="myDiv"></div>
    </body>
</html>

trackingCode.htmlの中身はこんな感じです。

<script type="text/javascript">
    alert("Outside the jQuery ready");
    $(function() {
        alert("Inside the jQuery ready");
    });
 </script>

これは、Safari 4で動作します。

更新: DOCTYPE と html 名前空間を追加して、私のテスト環境でのコードと一致するようにしました。 Firefox 3.6.13 でテストしたところ、サンプル コードが動作しました。