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つのことが起こる必要があります。
あなたは、文書readyイベントでの世話を、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