프론트엔드/Tips

[자바스크립트] Iframe 내부 요소 수정하기

Marshall K 2019. 2. 19. 19:30

Iframe으로 가져오는 요소들은 css로 백날 건드려봐야 수정할 수 없습니다.

하지만, 간단한 스크립트를 통해 내부에 있는 요소들을 수정 / 제거할 수 있습니다.



예를 위해 https://publish.twitter.com/ 에서 불러온 트위터 타임라인을 수정해보겠습니다.

550px로 높이를 변경하는 커스터마이징만 하고 가져온 타임라인입니다.



수정된 타임라인입니다.

상단과 하단에 고정돼있던 header와 footer를 제거하고, 크롬에서 스크롤바의 모양을 변경했습니다.


HTML (예시)

1
<iframe src="" frameborder="0" id="iframe"></iframe>
cs


JS

1
2
3
$("#iframe").one("load"function() {
  $("#iframe").contents().find(/*something*/).remove()
})
cs


상술한 트위터 타임라인을 불러오는 스크립트는 형태가 조금 다르기에


HTML (예시)

1
<a class="twitter-timeline" data-height="350" href="https://twitter.com/JYPETWICE?ref_src=twsrc%5Etfw"></a> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
cs


JS

1
2
3
$("#iframe-wrapper").bind("DOMNodeRemoved"function() {
    $("#twitter-widget-0").contents().find(/*something*/).remove()
})
cs


같은 방법으로 사용하셔야 합니다.


1
2
3
4
5
$(".iframe-wrapper").bind("DOMNodeRemoved"function() {
    $("#twitter-widget-1").contents().find(".timeline-Header, .timeline-Footer").remove(),
    $("#twitter-widget-1").contents().find(".timeline-Viewport").height(550),
    $("#twitter-widget-1").contents().find(".SandboxRoot").append("<style>::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#ff7c94;border-radius:10px}</style>")
})
cs


위 스크립트는 제가 이 포스트에서 타임라인 수정을 위해 사용한 스크립트입니다.