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

时间:2012-03-26 12:30:58

标签: javascript jquery asp.net iframe

我在page1(一个aspx页面)上有一个小的javascript / jquery脚本,它滚动了一个加载了page2的iframe,这样当你向上和向下滚动页面1时它就会在你的页面上停留。但是,当我在另一个父页面的iframe中加载page1时,滚动效果不起作用。

我尝试在调用中使用window.parent,但是当您在父页面的iframe(另一个aspx页面)中滚动page1时,脚本仍然不会激活并滚动page2 iframe。我希望这是有道理的。

这是我尝试过的脚本:

<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加载到父页面中,它似乎看不到父页面的滚动事件。

提前感谢任何建议! 埃林

3 个答案:

答案 0 :(得分:2)

请参阅此回答Run JQuery in the context of another frame

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

// 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");

    });
});

答案 1 :(得分:1)

我也想在iframe和Rantul中使用浮动div这个代码对我有效!

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

答案 2 :(得分:0)

我认为您无法在$(window.parent).scroll()内或$(document).ready()内拨打$(window.parent.document).ready()。就此而言,我认为$(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才能实现这一点。