在加载js文件之前不执行javascript(异步。)

时间:2014-01-10 14:31:57

标签: javascript ajax jquery

我有一个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之前运行。

这段代码只是一个例子,所以我正在寻找全球解决方案。 请你帮我解决这个问题吗?

4 个答案:

答案 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 -->