只有在加载外部内容后才能运行脚本

时间:2014-04-10 18:47:34

标签: jquery ajax loading external

在任何人问之前,这不是关于如何在页面加载后运行脚本或类似内容的常见问题。

基本上,我有this example (fiddle)

$.getScript("http://platform.linkedin.com/in.js").done(function() {
     alert('hello');   
    });

警报在我点击后立即触发,因为它在AJAX呼叫结束时触发。我的目的是在页面上显示LinkedIn公司简介之后才启动警报,以便我可以通过jQuery访问其元素。有人知道怎么做或者甚至可能吗?

提前致谢!

3 个答案:

答案 0 :(得分:2)

出现问题是因为加载的是另一个文档(iframe上的另一个DOM树)。脚本加载结束后,您必须检查此新文档是否已准备就绪。

这是基于这两个问题的答案:

jQuery .ready in a dynamically inserted iframe

Javascript callback when IFRAME is finished loading?

答案 1 :(得分:0)

The docs有一些好的tid位。

var myCallBack = function() {
    alert('hello');   
}


$("#showDiv").click(function(){
    $.getScript("http://platform.linkedin.com/in.js?async=true", function() {
        IN.init({
            onLoad: "myCallBack"
        });
    });
}); 

答案 2 :(得分:-1)

https://api.jquery.com/jQuery.getScript/

$.getScript( "http://platform.linkedin.com/in.js" )
  .done(function( script, textStatus ) {
    console.log( textStatus );

    // You can start some function that periodically will check the loaded content.
    // Once it is detected stop that event.

  })
  .fail(function( jqxhr, settings, exception ) {
    $( "div.log" ).text( "Triggered ajaxError handler." );
});

https://developer.linkedin.com/

我刚刚为你做了一些专门的调查

这是工作代码。享受!

<a href="#" id="showDiv">Show Agency</a>
<div id="invisibleDiv">
    <script type="IN/CompanyProfile" data-id="1035" data-format="inline" data-related="false">
    </script>
</div>

<script>
    $(function(){
    $("#showDiv").click(function(){
        $.getScript("http://platform.linkedin.com/in.js").done(function(script, textStatus) {
            if (textStatus == "success")
            {
              console.log( textStatus );
              var intervalID = setInterval(function(){
                  console.log("time + 1000" );
                  if ($('#uploads').contents().find('iframe').contents().find('.company-logo')) {
                      console.log("hello!!!");
                  }
                  else {
                      console.log("wahaat???");
                  };
            }, 1000);

         }
        });
    });
    });
</script>