我有一个js代码,我用ajax加载但该代码是用户生成的,所以我无法控制代码。例如,用户可以从某处复制粘贴代码
$.post('url', null, function(data, textStatus, xhr) {
$('#someID').html(data)
});
响应下面
<!-- AddThis Smart Layers BEGIN -->
<!-- Go to http://www.addthis.com/get/smart-layers to customize -->
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=xa-52cfba37486a2e20"></script>
<script type="text/javascript">
addthis.layers({
'theme' : 'transparent',
'share' : {
'position' : 'left',
'numPreferredServices' : 5
}
});
</script>
<!-- AddThis Smart Layers END -->
但是当我使用AJAX(.load())加载它时,我在'addthis'上出错,因为脚本在加载addthis_widget.js之前运行。
这段代码只是一个例子,所以我正在寻找全球解决方案。 请你帮我解决这个问题吗?
答案 0 :(得分:0)
AJAX.load方法有一个回调函数,在加载完成时运行。
$(document).ready(function(){
$( "#result" ).load( "ajax/test.js", function(data){
//callback
} );
});
或者您可以使用jQuery getScript方法
$.getScript( "ajax/test.js" )
.done(function( script, textStatus ) {
console.log( textStatus );
})
.fail(function( jqxhr, settings, exception ) {
$( "div.log" ).text( "Triggered ajaxError handler." );
});
答案 1 :(得分:0)
document.ready(),非常简单
答案 2 :(得分:0)
您可以在一个字段中为用户提供两个字段,他们可以将链接粘贴到他们可以编写的第二个.js文件中的链接或粘贴其js代码,因此当您首先加载时,您将从第一个字段加载数据,我认为这可能有用
答案 3 :(得分:0)
<!-- AddThis Smart Layers BEGIN -->
<script>
$.getScript('http://s7.addthis.com/js/300/addthis_widget.js#pubid=xa-52cfba37486a2e20', function() {
// alert('Loaded!');
addthis.layers({
'theme': 'transparent',
'share': {
'position': 'left',
'numPreferredServices': 5
}
});
});
</script>
<!-- AddThis Smart Layers END -->