弄清楚javascript函数是否已经运行

时间:2017-02-27 16:04:25

标签: jquery function

我希望能够在脚本从脚本加载到页面后触发一些代码。

我无法访问该脚本,因为它是从第三方加载到网站上的。

第三方功能运行后如何触发功能?

e.g。

function threeParty(){
    //I have no access to this code
    $('body').append('<div id="testDiv"></div>');
}

function myFunction(){
     $('#testDiv').html("TEST");
}

我希望能够做点像......

threePart.done(function(){
  myFunction();
});

$('#testDiv').load(function(){
  myFunction();
});

感谢。

2 个答案:

答案 0 :(得分:1)

突变观察者很甜蜜。你可以在这里使用一个。基本上,我们为body添加一个监听器。每当添加或删除节点时,监听器都会报告。发生这种情况时,请检查我们的节点是否已添加。来自MDN的更多信息:https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver

SKPositionerService.sharedInstance().startLocationUpdate()

请注意,我传递了参数//make the observer var observer = new MutationObserver( //callback function, it gets triggered when anything mutates function (mutations) { mutations.forEach(function (mutation) { //see if the nodes mutated (something was appended) if (mutation.type === "childList") { //then the com changed. see if it has our element if ($('#testDiv').length > 0) { //then the div was appended. do something! myFunction(); //optionally, disconnect the observer if we're done listening observer.disconnect(); } //else, do nothing } }); }); //above, we made the observer. now, tell it to start observing `body`: observer.observe(document.getElementsByTagName('body')[0], {childList: true}); ,告诉观察者我们只关心身体子节点的变化,而不是其他变化,例如属性的变化。

答案 1 :(得分:0)

对于那些不需要IE的人,可以使用Promises对JavaScript中的代码做出反应:

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="test"></div>
#parent{
height: 100%;
max-height: 100%;
min-height: 100%;
width: 100%;
max-width: 100%;
min-width: 100%;
}

#child{
height:100%;
width: 100%;
border: 1px solid black;
}