我希望能够在脚本从脚本加载到页面后触发一些代码。
我无法访问该脚本,因为它是从第三方加载到网站上的。
第三方功能运行后如何触发功能?
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();
});
感谢。
答案 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;
}