0

AJAX ディープ リンク サイトがあります。基本的な構造は次のようなものです。

<html>
    <head>
        ...
    </head>
    <body>
        ...
        <!-- AJAX will change the content of this div tag -->
        <div id="ajax">
            ...
        </div>
        ...
    </body>
</html>

したがって、ここでの考え方は、URL () のフラグメント値に応じて AJAX#queryが適切に<div id="ajax">.

これが問題です。このことを考慮。ユーザーが最初にこのページ ( #home) をロードし、次のページがロードされます:

<html>
    <head>
        ...
    </head>
    <body>
        ...
        <!-- AJAX will change the content of this div tag -->
        <div id="ajax">
            <!-- content of the home page -->
            ...
        </div>
        ...
    </body>
</html>

この後、ユーザーはページに移動します#query。このページをロードするために、AJAX は <div id="ajax">タグの innerHTML を変更します。のコンテンツに#queryオブジェクトが埋め込まれているとします (この例では、FlowPlayer を使用した埋め込みビデオ)。AJAX が完了すると、コードは次のようになります。

<html>
    <head>
        ...
    </head>
    <body>
        ...
        <!-- AJAX will change the content of this div tag -->
        <div id="ajax">
            <!-- Flowplayer JavaScript component -->
            <script src="flowplayer-3.2.4.min.js"></script>
            <!-- The player container -->
            <div id="player" style="width:720px;height:480px;"></div>
            <!-- Player installation -->
            <script>
                flowplayer("player", "flowplayer.swf", {
                    clip: "video.mp4"
                });
            </script>
        </div>
        ...
    </body>
</html>

これを実行しようとすると、次のスクリプトが実行されないため、ビデオが読み込まれません。

<script>
    flowplayer("player", "flowplayer.swf", {
        clip: "video.mp4"
    });
</script>

この問題を解決するにはどうすればよいですか、または何が間違っていますか?

どんな助けでも大歓迎です。

編集進捗報告

ajax私はこれを行うことでdiv タグの HTML コンテンツを交換していました:

document.getElementById("ajax").innerHTML = xmlhttprequest.responseText;

今、私はこれを次のように変更しました:

var element = document.createElement("div");
element.setAttribute("id", "ajax");
element.innerHTML = xmlhttprequest.responseText;
toswap = document.getElementById("ajax");
toswap.parentNode.replaceChild(element, toswap);

これにより Firefox の問題が解決され、<script>get がトリガーされますが、Chrome と IE ではまだ機能しません。

何か案は?

4

1 に答える 1

0

ブラウザーは、DOM にテキストとして追加された JavaScript を実行しません。この質問を見てください:

AJAXによって取得された <div> 内で <script> を実行する

于 2013-04-19T10:31:57.633 に答える