添加eventlistener" load"事件发生后

时间:2017-03-01 13:00:32

标签: javascript event-listener

当我添加类型"加载"的Eventlistener时会发生什么? (我的意思是addEventListener("load", function(event){...}))事件被触发后(例如我在我的文档开头加载一个谷歌地图api,而不是我要求一些php请求,之后我添加了监听器来决定是否google-api脚本已加载)。我希望EventListener在脚本已经加载的情况下调用回调。默认情况下会发生这种情况吗?

我的代码就是这个

HTML的文档:

<script src="https://maps.googleapis.com/maps/api/js?key=...&callback&signed_in=true&callback=RoadtripsTable.drawRoadtripsOnMap"async defer></script>

JS-DOC:

$.ajax({
    type: "POST",
    url: "../PHP/RoadtripsTable.php",
    data: ({
    fnChoice: "listRoadtrips"
}),
    success: function(result){
             head.addEventListener("load", function(event) {
                 if (event.target.nodeName === "SCRIPT")
                 {
                 /*now I would like to call the callback of the script tag in html*/ drawRoadtripsOnMap(); /* but what happens when the script was alread loaded?*/
                 }
             }, true);

             }
});

2 个答案:

答案 0 :(得分:0)

如果我理解你的话,你只需要检查谷歌地图是否已加载

if (google && google.maps) {
    // google maps is loaded
}

答案 1 :(得分:0)

在我看来,您需要切换到Promises,因为一旦事件已经发生,传统的处理事件的方法就不会触发,但如果您在代码中使用promises,那么承诺使您可以灵活地执行代码(即使事件已经发生,您计划在事件触发之后/之后执行,例如回调)。

Javascript Promises