下面的脚本为网页中单击锚链接时添加平滑滚动效果。
适用于大多数现代浏览器,包括iOS和Android的移动浏览器。但是,如果在iframe内运行脚本,则iOS浏览器不会应用平滑滚动效果。实际上,锚点链接将变得无用(如果用户单击其中一个,则什么也不会发生)。即使在iframe内部,该脚本也可以在Android和几乎所有桌面浏览器中工作。
iOS在iframes方面存在各种问题。例如,即使iframe声明高度为300px,iOS也会扩展iframe的高度以适应内容,而没有滚动条。解决方法是:将iframe包装在高度为300px的div中,并添加
回到我的问题。为什么这样一个简单的脚本在iframe中在iOS上失败?这可能与iOS处理iframes的方式有关(如上所述)?
为了澄清事情,我需要在iOS的iframe内使平滑滚动效果正常工作。Iframe和父文档都来自同一域。
任何人有想法吗?
有一个有效的示例,请参见此处:http://www.nightskyinfo.com/iframe2/
$('a').click(function(){
$('html, body').animate({
scrollTop: $( $.attr(this, 'href') ).offset().top
}, 500);
return false;
});
适用于大多数现代浏览器,包括iOS和Android的移动浏览器。但是,如果在iframe内运行脚本,则iOS浏览器不会应用平滑滚动效果。实际上,锚点链接将变得无用(如果用户单击其中一个,则什么也不会发生)。即使在iframe内部,该脚本也可以在Android和几乎所有桌面浏览器中工作。
iOS在iframes方面存在各种问题。例如,即使iframe声明高度为300px,iOS也会扩展iframe的高度以适应内容,而没有滚动条。解决方法是:将iframe包装在高度为300px的div中,并添加
overflow: auto;
和-webkit-overflow-scrolling: touch;
。回到我的问题。为什么这样一个简单的脚本在iframe中在iOS上失败?这可能与iOS处理iframes的方式有关(如上所述)?
为了澄清事情,我需要在iOS的iframe内使平滑滚动效果正常工作。Iframe和父文档都来自同一域。
任何人有想法吗?
有一个有效的示例,请参见此处:http://www.nightskyinfo.com/iframe2/
主html文件的源代码: http://www.nightskyinfo.com/iframe2/index.txt
放置在此iframe中的html文件的源代码: http://www.nightskyinfo.com/iframe2/iframe.txt