我有一个历史API脚本,可以将内容从URL加载到主页面div中,然后相应地更改URL。但是由于我不会为了简洁而解释的原因,我不得不在页面中使用内联脚本来加载音频播放器。当带有播放器的页面使用历史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进入时被过滤掉的内联脚本。
我希望你理解我的要求,我希望有办法防止这种情况发生。
答案 0 :(得分:0)
不知道为什么我没有发现这么长时间,但脚本是在加载DOM之前执行的。我已经更改了函数,因此在加载新DOM后执行脚本。