使用IFrame和Javascript滚动父页面

使用IFrame和Javascript滚动父页面,javascript,jquery,html,css,iframe,Javascript,Jquery,Html,Css,Iframe,我正在寻找一些关于什么应该是基本脚本的帮助(我想),但我自己也不太明白 我有一个带有iFrame的页面,显示一个我只能访问页眉的页面。 我希望这样,当有人单击iFrame窗口中的任何链接(标记)时,它会将我的父页面滚动到顶部(或特定位置)。 这可能吗 编辑:另外,如果这很重要,我已经在使用David Bradshaw的iFrame resizer脚本动态调整帧大小,它使用postmessage来传递帧->页面 Edit2:父窗口和iframe窗口是跨域的请参见 向iframe页面添加一些JS:

我正在寻找一些关于什么应该是基本脚本的帮助(我想),但我自己也不太明白

我有一个带有iFrame的页面,显示一个我只能访问页眉的页面。 我希望这样,当有人单击iFrame窗口中的任何链接(标记)时,它会将我的父页面滚动到顶部(或特定位置)。 这可能吗

编辑:另外,如果这很重要,我已经在使用David Bradshaw的iFrame resizer脚本动态调整帧大小,它使用postmessage来传递帧->页面

Edit2:父窗口和iframe窗口是跨域的

请参见

向iframe页面添加一些JS:

$(document).ready(function(){
    $('a').click(function(){
        window.parent.$(window.parent.document).trigger('scroll');
    });
});
然后在父页面上:

$(document).bind('complete', function(){
    //Add scroll code.
});
您可以使用PostMessage来执行类似的操作,但如果您控制两个页面,并且它们位于同一个域中,则应该可以这样做。如果它们在不同的域上(您没有指定),您将无法使用postMessage,我认为这不完全符合跨浏览器的要求,因此无法在所有设置上工作,并且确实没有回退

如果您想使用postMessage,并且您正在使用插件,只需执行以下操作

window.addEventListener("message",function(event){
    if(event.origin == 'http://yourdomain.com'){
        if(event.data == 'messageString'){
            //Add scroll code
        }
    }
});

最新版本的iframe resizer作为滚动页面的选项,还支持页面内链接。抱歉,我添加了一个编辑。我忘了提到这是跨域的。跨域的你一直在使用post消息。我真的不相信有任何其他的方法。这里有一篇很好的文章解释了这一切:事实上它很简单。