jQuery iframe 스크롤 이벤트 (IE)
-
06-09-2019 - |
문제
Internet Explorer 7에서 스크롤 이벤트를들을 수 없습니다.
난 노력 했어:
$("#myIframe").scroll(function() { alert('hi'); })
FF의 작업 :
$($("#myIframe").contents().get(0)).scroll(function() { alert('hi'); })
키 프레스 작동 :
$($("#myIframe").contents().get(0)).keydown(function() { alert('hi'); })
올바른 솔루션이 없습니다
다른 팁
내가 jQuery를 좋아하는만큼. 나는 이것을 작동시킬 수 없다. 그러나 나는 이것을 평범한 오래된 JavaScript에서 시도했으며 IE, FF, Safari 및 Chrome에서 잘 작동했습니다.
<script type="text/javascript">
window.onload = function() {
var frm = document.getElementById("myIframe").contentWindow;
frm.onscroll = function(){
alert("EUREKA");
}
}
</script>
편집하다: Window.load ()를 사용할 때 FF, Safari 및 Chrome에서 다음은 작동합니다. document.ready를 사용하는 경우 FF에서만 작동합니다. 어떤 이유로 든 IE8에서는 작동하지 않습니다.
$(window).load(function(){
$($('#myIframe').contents()).scroll(function(){
alert('frame scrolled in jquery');
});
});
나는 그것이 오래된 실이라는 것을 알고 있지만 어떤 사람들은 그것이 유용하다는 것을 알 수 있습니다.
$(document).scroll()
교체 할 수 있습니다 $(window).scroll()
, 그리고 그것은 지금까지 나를 위해 일했습니다.
이 시도:
중첩 된 브라우징 컨텍스트의 DOM을 가로 지르기 전에 2 가지 일이 발생해야합니다.
문서 준비 이벤트를 처리하고 IFRAME가 존재한다는 것을 알아야합니다.
그리고 iframe이로드되었는지 확인해야합니다.
즉:
$(document).ready(function(){
// #page is the id of the iframe
$('#page').load(function(){
// $(this)[0].contentWindow is the window of your nested browsing context/ iframe
$($(this)[0].contentWindow).scroll(function(){
console.log($(this).scrollTop());
});
});
});
주목할만한 점은 이것이 Firefox에서 크로스 브라우저가 작동하지 않는다는 것입니다.
이것을 부모에게 넣으십시오.
var childScrollHandler = function () {
alert('Scrolling going on');
}
그런 다음 이것을 iframe 컨텐츠에 넣습니다.
$(document).bind('scroll', function(ev){
parent.childScrollHandler(ev);
});
바꾸다 $(document)
당신이 듣고 자하는 요소에 의해.
제휴하지 않습니다 StackOverflow