자바 스크립트 콘솔에서 컨텍스트를 iframe으로 변경하는 방법이 있습니까?


107

웹킷 개발자 도구 / 방화범 콘솔에서 실행되는 자바 스크립트의 컨텍스트를 변경하여 페이지의 iframe 내부에서 실행되는 것처럼 코드를 실행하고 싶습니다.

별도의 페이지에서 iframe의 페이지를 열어서이 작업을 수행 할 수 있다는 것을 알고 있지만 부모 프레임과 상호 작용하는 코드를 실행하고 싶습니다.


1
항상 window.frames[x]방식으로 코드를 실행할 수 있습니다 . 원하는 명령을 추가하십시오. IEwindow.frames[0].runFunction()
LoveAndCoding 2011

1
@Ktash, 아마도 대답을하고 싶습니까?
Muhd 2011

IE에서 어떻게 똑같이 할 수 있습니까? 요소가 내부 IFRAME에있는 경우 $를 사용하여 콘솔 창에서 요소를 선택하는 것이 매우 어렵습니다. 도와주세요.
tarekahf

답변:


149

Chrome 15를 사용하면 콘솔의 범위를 변경할 수 있습니다. 콘솔 하단의 콘솔 지우기 버튼 옆 <top frame>에 사용 가능한 프레임 목록을 제공하는 메뉴가 있습니다.

여기에 이미지 설명 입력

Firefox에는 현재 개발중인 유사한 기능이 있습니다.

여기에 이미지 설명 입력


명령 줄을 사용하여 프레임 탐색 할 수도 있습니다 .

var frame = document.getElementById("frame1").contentWindow;
cd(frame);

6
콘솔에서 코드를 실행하여 동일한 작업을 수행 할 수 있습니까? 아니면 프레임 선택기를 클릭해야합니까?
bodine 2013-08-07

@bodine-콘솔 명령에서 수행하는 방법을 찾았습니까?
arty

1
이 드롭 다운은 이제 하단이 아닌 콘솔 상단에 있습니다.
Muhd

1
Chrome 38에서는이 기능을 볼 수 없습니다. Chrome에서이 작업을 수행하는 방법을 빨리 알 수 없습니다. 대신 Firefox에서 cd ​​(frames [<index number>])를 사용했습니다.
Akrikos 2014 년

1
부끄러운 일입니다. 프레임의 내용이 변경되면 선택한 프레임이 유지되지 않습니다. "상단 프레임"으로 다시 전환
bryc

22

기능 <iframe>을 사용하여 s 에서 코드를 실행할 수 있습니다 window.frames[x]. 예를 들면

window.frames[0].runFunction()

FireBug가 선택의 무기라면 좋은 대안입니다. 감사.
Surreal Dreams

1
jQuery 명령과 같은 기능 외부에서 코드를 어떻게 실행합니까? 또는 어떤 프레임 아래에서 DOM 요소에 대한 참조를 얻으려면 해당 요소에 대해 코드를 실행 하시겠습니까?
David

예를 들면 다음과 같습니다.window.frames[0].alert()
Shayan

6

오늘날의 Chrome (버전 52)에서는 개발자 도구의 "요소"탭에서 iframe을 선택하기 만하면됩니다. JS 콘솔에서 실행하는 모든 항목은 선택한 iframe의 컨텍스트에서 자동으로 실행됩니다.

예를 들어, 여기에서 iframe을 선택 document.location.pathname했으며 콘솔에 입력 하면 주소 표시 줄의 URL 대신 iframe의 src 속성이 반환됩니다.

여기에 이미지 설명 입력


4

방화범 솔루션의 경우 다른 질문에 대한 답변 을 참조하십시오 . 그러나 Dennis의 Chrome 솔루션과 같이 교차 도메인에서 작동하지 않습니다.

편집 : 최신 버전의 방화범을 사용하면 도메인 간 문제가 해결되었을 수 있습니다.


4

기본적으로 스크립트 문 및 명령 실행은 최상위 창에서 수행됩니다. 프레임을 사용하는 경우 "cd ()"콘솔 명령을 사용하십시오.

cd () 매개 변수없이 cd ()를 호출하면 최상위 창으로 돌아갑니다.

cd (window) 웹 페이지의 기본 최상위 창에서 프레임 창으로 명령 줄 식 평가를 변경할 수 있습니다.

자세한 정보는 여기


내가 찾던 바로 그것입니다. (Firefox에서 작동합니다) 감사합니다.
user2410595

4
cd(document.getElementsByTagName('iframe')[0]);

2
Stack Overflow에 오신 것을 환영합니다! 코드가 수행하는 작업과 문제를 해결하는 이유에 대한 설명을 추가하려면 게시물 편집을 고려하십시오. 대부분 코드 만 포함하는 답변 (작동 중이더라도)은 일반적으로 OP가 문제를 이해하는 데 도움이되지 않습니다.
SuperBiasedMan 2015 년

감사! 이것은 파이어 폭스에게는 이상한 방법이지만, "cd (iframe)"은 컨텍스트를 전환하기 위해 콘솔에 입력하는 것입니다. 나는 당신에게 +1 b / c를주었습니다. 당신은 저에게 많은 헤드 뱅킹을 구했습니다. 그러나 당신은 정말로이 포스트를 다듬고 그것을 설명해야합니다!
스콧 스미스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.