0

URL からページのメイン div にコンテンツをロードし、それに応じて URL を変更する履歴 API スクリプトがあります。ただし、簡潔にするために説明しない理由により、ページでインライン スクリプトを使用してオーディオ プレーヤーにロードする必要があります。プレーヤーを含むページが履歴 API で AJAX 化されると、インライン スクリプトが削除されます。

以前、jQuery の AJAX 関数がインライン スクリプトを除外することに問題がありましたが、履歴 API スクリプトでこれを回避しました。

var dom = $(responseData);
dom.filter('script').each(function(){//function to allow inline javascript
    $.globalEval(this.text || this.textContent || this.innerHTML || '');
});

このインライン スクリプトの場合、これは機能しません。

//append player with js so doesn't show when js disabled
$('#profile_content').append('<div class="artistFeedItem" data-type="track" data-id ="<?php echo $E_ID; ?>" data-ts ="<?php echo $ts; ?>"><img src="../files/images/bigLoader.gif" style="display:block;margin-left:auto;margin-right:auto;"></div>'); //loading

$('*[data-type="track"].artistFeedItem').each(function () {
    //Get player for track and send off variables
    var E_ID = "<?php echo $E_ID; ?>";
    var T_ID = "<?php echo $T_ID; ?>";
    var T_url = "<?php echo $T_url; ?>";
    var T_name = "<?php echo $T_name; ?>";
    var T_timestamp = "<?php echo $T_timestamp; ?>";
    var T_pic = "<?php echo $T_pic; ?>";
    var A_name = "<?php echo $name; ?>";
    $.ajax({
        url: 'player/body_player_template',
        type: 'GET',
        data: {
            T_url: T_url,
            T_name: T_name
        },
        success: function (responseData) {
            $('*[data-type="track"]*[data-id="' + E_ID + '"].artistFeedItem').html(responseData);
        },
        error: function (xhr, textStatus, errorThrown) {
            $('*[data-type="track"]*[data-id="' + E_ID + '"].artistFeedItem').html("Sorry, this track couldn't be loaded. Try refreshing the page.");
        }
    });
});

これは、AJAX が組み込まれたときに除外されるインライン スクリプトです。

私が求めていることを理解していただき、これを防ぐ方法があることを願っています。

4

1 に答える 1

0

長い間これを見つけられなかった理由はわかりませんが、スクリプトは DOM がロードされる前に実行されていました。新しいDOMがロードされた後にスクリプトが実行されるように、関数を変更しました。

于 2013-05-10T16:56:42.910 に答える