实现流畅的iFrame导航

时间:2014-04-28 21:16:00

标签: javascript jquery html iframe postmessage

我在其中有一个带导航的iFrame,这意味着在其内部导航时会更改iframe src。 iFrame中的导航代码类似于:

window.location = "new URL";

虽然这很有效但用户体验非常糟糕,特别是在移动设备上(当iFrame更改源代码时,我可以看到“闪烁”/“闪烁”)

我尝试通过在导航时向父级触发postMessage来实现与Chris Coyier here类似的东西,告诉父级在src被更改时隐藏/显示iFrame。像(这是在父postMessage事件中):

var $iFrame = $('iframe');

$iFrame.css({'visibility': 'hidden'});

$iFrame.load(function(){
    $iFrame.css({'visibility': 'visible'});
});

这样可行,但效果并不好 - 当我的新代码隐藏iFrame时,我仍然可以看到这个“闪烁”。

我的第三次尝试包括一个新的iFrame,并给它新的源,只有当它加载使它可见并隐藏第一个。这也没有改善结果:

 var $iFrame = $('.iFrame1');
 var $iFrame2 = $('.iFrame2');

 $iFrame2.attr('src', encodeURIComponent(url));

 $iFrame2.load(function(){
     $iFrame2.css({'visibility': 'visible'});
     $iFrame.css({'visibility': 'hidden'});
 });

任何有助于实现更顺畅过渡的帮助(在移动设备上!)将非常感谢!

1 个答案:

答案 0 :(得分:0)

如果我发现问题不正确,您可以尝试更改不透明度,而不是可见性。通过这种改变,你可以给它一个简短的淡入淡出过渡。这可以通过CSS或jQuery实现,无论你喜欢什么。