向下滚动iFrame - jQuery / JS

时间:2014-01-15 23:07:19

标签: javascript jquery html iframe scroll

我试图通过点击不在iFrame内部的按钮来滚动我的iFrame,我还不太了解Javascript / jQuery,我正在学习,所以也许有人可以在这里帮助我? 我将更具体,点击图片(imgcast1到imgcast4,你可以在代码中看到)iFrame将滚动到某一点,如果你打开iFrame src你可以看到iFrame内容,如果你想看到整个网站,但有很多错误在这里打开:
http://www.flamingpanda.xpg.com.br/(很多人因为XPG而没有在Chrome中打开,至少在我的电脑上没有这个)
这是完整的代码: http://jsfiddle.net/9pfzX/2/

<table height="424px" width="288px">
<tr><td><img onclick="AutocastRoll()" name="imgcast1" id="imgcast1" src="Img/cast1img.png" /></td></tr>
<tr><td><img name="imgcast2" id="imgcast2" src="Img/cast2img.png" /></td></tr>
<tr><td><img name="imgcast3" id="imgcast3" src="Img/cast3img.png" /></td></tr>
<tr><td><img name="imgcast4" id="imgcast4" src="Img/cast4img.png" /></td></tr>

// IFRAME WHICH WOULD BE SCROLLED TO 440PX THEN 880PX (ALWAYS +440PX)...
<div id="iFrameAutocast"><iframe name="iframepopup" id="iframepopup" scrolling="no"   frameborder="0" width="376px" height="439px"   src="http://www.flamingpanda.xpg.com.br/iFrameAutocast1.html"></iframe></div>

-

<script>
$(document).ready(function (){
    alert("Testing jQuery: Loaded and Executed");
    $('#imgcast1').click(function() {
        //SCROLL FOWN FUNC
    });
// ---------------------------------------------
    $('#imgcast2').click(function() {
        //SCROLL FOWN FUNC
    });
// ---------------------------------------------
    $('#imgcast3').click(function() {
        //SCROLL FOWN FUNC
    });
// ---------------------------------------------     
    $('#imgcast4').click(function() {
        //SCROLL FOWN FUNC
    });

});
</script>

2 个答案:

答案 0 :(得分:4)

您可以按div '#iFrameAutocast'而不是<iframe>滚动。由于跨域策略,操纵<iframe>要困难得多,基本上你可以使用.contents()访问其中的任何内容。但是,这在以前我遇到一些问题时并不起作用,我在你的问题中尝试了它,但它在某种程度上不起作用。

var iframe = $('#iFrameAutocast frame').contents();
iframe.scrollTop(880);

另一种解决方案是使用<iframe>的父'#iFrameAutocast'滚动

$(document).ready(function () {

var by = 440;//scroll increment
/* base on your markup structure and what you are trying to achieve 
   you can trim it down using .each() and scrolling by an increment
*/
$('tr td img').each(function (index) {
    $(this).click(function () {
        $('#iFrameAutocast').scrollTop(by * index)
        //or with some animation:
        //$('#iFrameAutocast').animate({scrollTop:by * index},'slow');
    });
});

});

请参阅此jsfiddle更新:jsfiddle.net/9pfzX/3/

答案 1 :(得分:0)

查看this对其他帖子的回答。

仅供参考:由于未发现任何安全错误,他的jsbin代码实际上无法正常工作,我已修复它,因此您可以看到代码正常工作here

TL; DR

var myIframe = document.getElementById('iframe');
myIframe.onload = function () {
    myIframe.contentWindow.scrollTo(xcoord,ycoord);
}