JavaScript - 문제 미리보기

문제 777

hard
다음 JSONP 구현에서 동적으로 script 태그를 생성하는 코드입니다. 빈칸에 들어갈 올바른 조합은? ```javascript function clickButton() { let s = document._______("script"); s._______ = "demo_jsonp.php?callback=myDisplayFunction"; document.body._______(s); } function myDisplayFunction(myObj) { document.getElementById("demo").innerHTML = myObj.name; } ```
A. `createElement` / `src` / `appendChild`
B. `createNode` / `href` / `addChild`
C. `makeElement` / `url` / `insertChild`
D. `newElement` / `source` / `appendNode`

정답: A

DOM 조작을 통한 동적 JSONP 구현의 핵심 패턴입니다. 동적 Script 태그 생성 과정: 1단계: 요소 생성 ```javascript let s = document.createElement("script"); // 태그 생성 ``` 2단계: 속성 설정 ```javascript s.src = "demo_jsonp.php?callback=myDisplayFunction"; // ``` 3단계: DOM에 추가 ```javascript document.body.appendChild(s); // HTML 문서의 body에 script 태그 삽입 ``` 전체 동작 흐름: 1. 버튼 클릭 → `clickButton()` 실행 2. Script 태그 동적 생성 및 DOM 추가 3. 브라우저가 `demo_jsonp.php?callback=myDisplayFunction` 요청 4. 서버가 `myDisplayFunction({...})` 형태로 응답 5. 함수가 자동 실행되어 데이터 처리 서버 응답 예시: ```php // PHP 파일 (demo_jsonp.php) $callback = $_GET['callback']; // "myDisplayFunction" $data = '{"name":"John", "age":30}'; echo $callback . "(" . $data . ");"; // 결과: myDisplayFunction({"name":"John", "age":30}); ``` 다른 옵션들이 틀린 이유: • `createNode`, `makeElement`, `newElement`: 존재하지 않는 메서드 • `href`: 링크용 속성, script에는 `src` 사용 • `addChild`, `insertChild`, `appendNode`: 존재하지 않는 메서드 현대적 대안: ```javascript // Fetch API with CORS fetch('https://api.example.com/data') .then(response => response.json()) .then(data => console.log(data)); ``` JSONP는 과거 cross-domain 문제 해결을 위한 방법이었지만, 현재는 CORS(Cross-Origin Resource Sharing)가 더 안전하고 표준적인 해결책입니다.

💡 학습 팁

이 문제를 포함한 JavaScript 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.