3

我使用这个 javascript 来加载一个滚动到我需要的区域的网页<iframe>。但是每当加载给定的 iframe 时,视口会立即跳转到该点,就像我#asContainer在 URL 末尾使用的一样。

HTML:

<h3>Audiosurf</h3>
<div id="asContainerWrapper">
    <iframe id="asContainer" scrolling="no"></iframe>
</div>

JavaScript:

$(document).ready(function(){
    $('#asContainer').attr('src','//audio-surf.com/mypage.php?u=DJDavid98#favorites_container');
});
4

2 回答 2

7

使用第一个答案我想出了这个:

http://jsfiddle.net/UZZ4c/1/

如您所见,它只是在显示之前加载和重新滚动时隐藏和显示 iframe。

我的第一个想法是您不需要滚动。iframe 元素在加载时不可见,并且浏览器不应滚动到锚点http://jsfiddle.net/UZZ4c/2/但是我没有测试这个理论,所以我将把它留给你。

我建议您在 iframe 隐藏时放置一个加载程序来代替它。

#asContainer { display: none; }

$(document).ready(function() {
    $('#asContainer').attr("src", "//audio-surf.com/mypage.php?u=DJDavid98#favorites_container").on('load', function() {
        $(this).show();
    });
});
于 2013-01-22T19:50:01.803 回答
1

您对此无能为力。问题在于您使用锚点移动页面链接到源站点的方式。带有普通网站的演示:

$(document).ready(function(){
    $('#asContainer').attr("src","http://www.lolwut.com");
});

http://jsfiddle.net/WGZUj/

使用您尝试嵌入的网站进行演示:

$(document).ready(function(){
    $('#asContainer').attr('src','//audio-surf.com/mypage.php?u=DJDavid98#favorites_container');
});

http://jsfiddle.net/UZZ4c/

理论上解决这个问题的一种策略是检测 iframe 何时加载,然后移回原始位置,但这是不可能的。

于 2013-01-22T18:38:03.437 回答