Programing

Chrome 개발자 도구를 사용하여 iframe 디버깅

lottogame 2020. 3. 20. 08:14
반응형

Chrome 개발자 도구를 사용하여 iframe 디버깅


Chrome 개발자 콘솔을 사용하여 내 앱의 변수 및 DOM 요소를보고 싶지만 앱이 iframeOpenSocial 앱이므로 내부에 존재합니다 .

따라서 상황은 다음과 같습니다.

<containing site>
 <iframe id='foo' src='different domain'>
  ... my app ...
 </iframe>
</containing site>

iframe개발자 콘솔에서 발생하는 작업에 액세스 할 수있는 방법이 있습니까? 내가하려고하면 document.getElementById("foo").something작동하지 않을 수 있습니다. 아마도 iframe다른 도메인에 있기 때문일 수 있습니다.

포함하는 사이트와도 대화 할 수 있어야하기 iframe때문에 새 탭에서 내용을 열 수 없습니다 iframe.


Chrome의 개발자 도구에는 맨 위에 요소, 네트워크, 소스 ... 탭 바로 아래에 Execution Context Selector(h / t felipe-sabino ) 막대 가 있으며 현재 탭의 컨텍스트에 따라 변경됩니다. Console (콘솔) 탭에 있으면 해당 막대에 드롭 다운이있어 콘솔이 작동 할 프레임 컨텍스트를 선택할 수 있습니다. 이 드롭 다운에서 프레임을 선택하면 적절한 프레임 컨텍스트에서 자신을 찾을 수 있습니다. :디

크롬 v59 크롬 버전 59

크롬 v33 크롬 버전 33

Chrome v32 이하 Chrome 프리 버전 32


현재 콘솔에서 평가는 페이지의 메인 프레임과 관련하여 수행되며 메인 프레임 자체와 동일한 교차 출처 정책을 준수합니다. 이것은 메인 프레임이 할 수 없다면 iframe의 요소에 접근 할 수 없다는 것을 의미합니다. 그래도 스크립트 패널을 사용하여 중단 점을 설정하고 코드를 디버깅 할 수 있습니다.

업데이트 : 이것은 더 이상 사실이 아닙니다. Metagrapher 's answer를 참조하십시오 .


상당히 복잡한 시나리오에서 Chrome 에서이 작업을 수행하는 방법에 대한 허용 된 답변이 효과가 없습니다. 대신 iframe의 일부인 소스를 포함하여 모든 '소스'를 표시하는 Firefox 디버거 (Firefox 개발자 도구의 일부)를 대신 사용해보십시오.


iFrame이 다음과 같이 사이트를 가리키는 경우 :

<html>
  <head>
    <script type="text/javascript" src="/jquery.js"></script>
  </head>
  <body>
    <iframe id="my_frame" src="/wherev"></iframe>
  </body>
</html>

이런 종류의 것을 통해 iFrame DOM에 접근 할 수 있습니다.

var iframeBody = $(window.my_frame.document.getElementsByTagName("body")[0]);
iframeBody.append($("<h1/>").html("Hello world!"));

참고 URL : https://stackoverflow.com/questions/3275816/debugging-iframes-with-chrome-developer-tools

반응형