使用Jquery从iframe内的子窗口访问父窗口滚动事件

Access parent window scroll event from child inside iframe with Jquery

本文关键字:窗口 访问 滚动 事件 Jquery iframe 使用      更新时间:2023-09-26

我在page1(一个aspx页面)上有一个小的javascript/jquery脚本,它可以滚动加载了page2的iframe,以便在您向上和向下滚动page1时,它会留在页面上。然而,当我在另一个父页面的iframe中加载page1时,滚动效果不起作用。

我试过在调用中使用window.parent,但脚本仍然没有激活并滚动page2iframe,就像在父页(另一个aspx页)的iframe中滚动page1一样。我希望这是有道理的。

这是我尝试过的脚本:

<script type="text/javascript">
        $(window.parent.document).ready(function () {
            var $scrollingDiv = $("#IframeDir");
            $(window.parent).scroll(function () {
                $scrollingDiv
                .stop()
                .animate({ "marginTop": ($(window.parent).scrollTop() + -10) + "px" }, "slow");
            });
        });

    </script>

如果我只是在它自己的选项卡或窗口中加载page1,这是有效的,但如果我将iframe中的page1加载到父页中,它似乎看不到父页的滚动事件。

提前感谢您的任何建议!Erin

请参阅此答案在另一帧的上下文中运行JQuery

您必须传入上下文才能在(父文档)中进行搜索

// Untested
$(window.parent.document, window.parent.document).ready(function () {
    var $scrollingDiv = $("#IframeDir");
    $(window.parent, window.parent.document).scroll(function () {
        $scrollingDiv
        .stop()
        .animate({ "marginTop": ($(window.parent, window.parent.document).scrollTop() + -10) + "px" }, "slow");
    });
});

我还想要iframe和Rantul中的浮动div,这段代码对我有用!

$(parent.window).scroll(function() {
   //parent document scroll functions go here
});

我认为您不能从$(document).ready()或在本例中从$(window.parent.document).ready()中调用$(window.parent).scroll()。就这一点而言,我认为$(window.parent).scroll()根本不起作用,我认为它需要$(parent.window).scroll()

我以前就是这样做的:

$(document).ready(function() {
//document ready functions go here
});
$(parent.window).scroll(function() {
//parent document scroll functions go here
});

为了回答您的另一个问题,我相信您也需要在父页面上使用jQuery才能正常工作。