google.setOnLoadCallback with jQuery $ (document) .ready (), 혼합해도 되나요?
저는 Google Ajax API를 사용하고 있으며 API와 google.setOnLoadCallback()
관련된 다양한 작업을 수행 하는 데 사용 하는 것이 좋지만 jQuery를 사용 $(document).ready()
하여 Google API와 관련이없는 다른 JS 작업도 수행하고 있습니다.
이 두 가지 접근 방식을 하나의 문서에 혼합하는 것이 안전합니까? 아직 눈치 채지 못했지만 규모의 문제라고 생각합니다.
이 작업을 거의 수행해야합니다.
google.setOnLoadCallback(function() {
$(function() {
// init my stuff
});
});
(jQuery 객체)가 사용 가능 하지 $(document).ready()
않으면 할 수 없으므로 $
콜백 내부로 이동해야합니다. 그리고 콜백 내에서 문서가 준비되었는지 확신 할 수 없으므로 그렇게해야합니다 ready()
.
이 문제를 죽음에서 일으켜서 미안하지만 1) 여전히이 문제에 대한 '답변'으로 나오고 2) 더 나은 해결책을 찾았습니다.
google.load
구성 옵션의 개체를 사용하는 함수 에 선택적 세 번째 인수가 있습니다. 옵션 중 하나는 callback
입니다. 또한 별도의 setOnLoadCallback
통화 가 필요하지 않습니다 .
예
google.load('visualization', '1.0', {
'packages': "charttype",
'callback': $jQ.proxy(me.setupChart, me)
});
그래서:
<script src="https://www.google.com/jsapi"></script>
<script>
$(document).ready(function () {
function mapsLoaded() {
etc etc etc
}
google.load("maps", "2", {"callback" : mapsLoaded});
});
</script>
참조 : https://developers.google.com/loader/#Dynamic
JavaScript 코드가 HTML 문서가 아닌 자체 js 파일에있는 경우 문서에서도 다음을 수행 할 수 있습니다.
<script>
google.load("jquery", "1.7.0");
google.load("jqueryui", "1.8.16");
google.setOnLoadCallback(function() {
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", "my.js");
document.getElementsByTagName("html")[0].appendChild(script);
});
</script>
이것은 my.js
다른 모든 항목 이 Google에서로드 된 후에로드됩니다. 당신의에서 my.js
파일 당신은 할 수 있습니다 $(document).ready(...)
. 따라서 애플리케이션 코드는 "Google에서로드"또는 "서버에서 직접로드"와 독립적입니다.
모든 것을 할 수 있는데 왜 섞을 $(document).ready()
까요? google.setOnLoadCallback
함수를 제거 하고 jQuery의 $(document).ready()
.
이:
google.setOnLoadCallback(chartEnrollment);
된다
$(document).ready(chartEnrollment);
'code' 카테고리의 다른 글
log4j에서 오래된 회전 로그 파일을 삭제하려면 어떻게해야합니까? (0) | 2020.12.30 |
---|---|
GROUP BY 쿼리로 행 수 가져 오기 (0) | 2020.12.29 |
위임, 구성 및 집계 구분 (Java OO 디자인) (0) | 2020.12.29 |
문자열에 마침표 (0) | 2020.12.29 |
루비 스타일 : 중첩 된 해시 요소가 있는지 확인하는 방법 (0) | 2020.12.29 |