【问题标题】:Using JQuery to scroll an iframe from the parent使用 JQuery 从父级滚动 iframe
【发布时间】:2012-07-16 03:08:34
【问题描述】:

我正在尝试使用 JQuery 从父窗口滚动 iframe。换句话说,在父页面上设置滚动子 iframe 的滚动按钮。它适用于 JavaScript,使用:

function scroller(howMuch) 
{
        var myIframe = document.getElementById('iframeid');

        myIframe.contentWindow.scrollBy(0,howMuch);
}

然后从以下位置调用函数:

<a href="javascript:scroller(-50)">Scroll Up 50 px</a>

但是尝试使用 JQuery 来使用 animate() 而不是笨重的 scrollBy() 并不容易。我试过了

$('#iframeid').contentWindow.animate({scrollTop : 50});

例如。我相当确定这是如何从 JQuery 访问 iframe 的 contentWindow - 在这个主题上找不到太多。一个问题可能是父页面设置为滚动:无(iframe 设置为默认值)。这可能是交易破坏者还是我错过了其他东西?我意识到我可以在 JavaScript 中编写延迟循环,但这激起了我的好奇心。

【问题讨论】:

  • 尝试给父 scroll:auto 也一样,那么你至少可以排除这种情况。
  • 另外,您还没有描述此代码是如何失败的,您是否遇到任何 JS 错误,哪个?我猜$('#iframeid').contentWindow 是无效的,因为 $()​​ 返回一个 jquery 对象。 $('#iframeid')[0].contentWindow 可能会成功。
  • iframe 页面是否与父级在同一个域中?
  • 相同的域,是的。代码没有错误,我试过给每个人滚动:自动。

标签: jquery iframe parent scrolltop


【解决方案1】:

这里有两个可能的问题,绝对是一个。

jQuery 不理解此字符串中的contentWindow(),为此您需要使用contents()

如果您能够操作 iframe(同域)的内容,那么您可以使用

$('element').on('mousedown', function(){
  $('iframe').contents().animate({ scrollTop : 50 });
});

按住它会滚动内容。试试看。

【讨论】:

  • 有趣...仍然无法正常工作。它不返回任何错误,并且脚本一直运行。它运行良好,甚至可以运行您的脚本行,但不会发生滚动。 iframe 在同一个域上,是的。除了调用里面的页面之外,我在 jQuery 中找不到太多关于 iframe 的文档。并从孩子滚动父母。嗯。
  • @user1527688 作为你的代码,你应该使用$('element').on('mousedown', function(){ $('body').find('iframe').contents().find('body').animate({ scrollTop : 50 }); }); ...你得到Error: Permission denied to access property 'ownerDocument'吗?
  • 无访问错误 - 子页面与父页面位于同一目录中。我会尝试使用 find('body') - 这可能是问题所在。
  • 嗯。这仍然没有奏效。这应该用 $(document).ready 调用,对吗? 'element' 是按钮或链接的id,find(iframe) 查找页面上的所有iframe?
猜你喜欢
  • 1970-01-01
  • 2011-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-13
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
相关资源
最近更新 更多