已知的“iPad 上的 Safari”与“桌面 Safari”的差异列表
Posted
技术标签:
【中文标题】已知的“iPad 上的 Safari”与“桌面 Safari”的差异列表【英文标题】:List of known "Safari on iPad" differences over "Desktop Safari" 【发布时间】:2011-03-01 16:51:48 【问题描述】:最近在 Windows/Mac 桌面浏览器上测试 Web 应用程序时,然后在 iPad 上,我注意到 Safari 中的各种不同之处,这是我没有预料到的。即使版本号相同。
我想列出这些差异(供我自己和其他人)作为开发人员参考。
例如在 iPad 上的 Safari 中
iPad Safari 完全控制选择列表/选项样式 当输入元素获得焦点时,iPad 会打开屏幕键盘,因此内联浮动日历小部件(等)可能无法按预期工作(或需要更改) iPad Safari 不支持position:fixed
像桌面 Safari prompt('long message...','default');
仅显示 1 行消息(尽管它确实提供消息滚动功能
我从其他人那里听说某些 javascript 不起作用,等等等等,但我尚未对其进行全面测试,因此我会感谢您可能遇到的任何发现。
【问题讨论】:
对你好,但这可能作为某处的博客文章更好,链接到这个问题。如果您对具体差异有疑问,Stack Overflow 应该可以提供帮助。 我创建了这个社区 Wiki,希望它可以是一个单一的资源......我发现博客上分散、隐藏的 cmets 和错误信息是 *** 在提供“正确”和简洁信息。不过,请随意链接到任何答案中的相关博客文章。我刚刚被position:fixed
的差异所困扰,因此我相信其他开发人员会发现“已知差异”列表非常方便。
【参考方案1】:
您现在可以通过 -webkit-appearance: none;
重置来控制 ios 上选择列表的样式
【讨论】:
【参考方案2】:position: fixed;
在 iOS 4 中无法使用,但在 iOS 5 中可以使用。
【讨论】:
我认为 iOS 版本与 iPad 型号无关。 我现在改了答案:P【参考方案3】:iPad Safari 中似乎存在一个错误,其中带有背景图像和背景颜色的 CSS 元素在背景颜色的颜色中带有轻微的边框。它应该用背景图像一直填充到渲染元素的边缘。
当我尝试在 Ipad 上查看时,我的网站上出现了同样的错误。 html 结构如下:
<div class="main"> <!-- background-color: white -->
<div class="left"></div> <!-- background-image: url(some_transparent_png) -->
<div class="content">...</div>
<div class="right"></div> <!-- background-image: url(some_transparent_png) -->
</div>
左层使用背景图像,而主层仅使用背景颜色。 Ipad 视图在左右图层的边缘显示了轻微的边框。
当我添加时
-webkit-background-size: 100% 100%;
到左右图层,边框消失。
【讨论】:
【参考方案4】:框架问题。 iPad Safari 将隐藏滚动条并将框架扩展至其内容的大小。
将框架标签更改为包含scrolling="yes"
和noresize="noresize"
似乎没有任何作用。
有些网站在任何东西上看起来都很好,甚至是 Dreamcast 浏览器,但在 iPad 上却不行。可以使用表格和 iframe 而非正常的框架设置(列和行等)来解决此问题。
【讨论】:
【参考方案5】:Beside 不支持 TextAea 中的滚动条,看来我们也可以使用 javascript 来自动选择 TextArea 中的文本。 此代码只会将光标移动到 TextArea 中文本的末尾。
<div>
<textarea id="text-embed-code" autocapitalize="off" multiline="">
There is a fox running after chrome.
</textarea>
<button onclick="testSelectText(event);">select text</button>
</div>
<script>
function testSelectText(e)
var box = document.getElementById("text-embed-code");
box.select();
e.preventDefault();
return false;
</script>
【讨论】:
【参考方案6】:我目前正在开发一个小型响应式网络应用程序,它大量使用 iframe youtube api。显然 ipad 版本的 safari 不支持我在这个项目中大量使用的一些 html5 方法。
其中一个是window.postMessage,它是一种与其他页面上的脚本交互的方式,例如在该iframe“内”使用的脚本。自动播放视频也不起作用。
【讨论】:
我不确定 Safari 是否支持此功能,但您是否有机会遇到这个更普遍的问题? ***.com/questions/3457391/…【参考方案7】:超过特定文件大小的 24 位透明 PNG 不会在 iPad2 上呈现。 但是,我可以获得相同尺寸的 8 位进行渲染。 我还没有发现这个最大文件大小是为了让它们渲染。
【讨论】:
有趣的发现...如果您有任何指向图像的示例链接,我很想尝试一下。 (也仅限于 iPad2?还是 iPad1 也受到影响?)【参考方案8】:我还发现移动 safari 不支持 contenteditable
,因此使用普通的 textarea
是更好的选择。 Apple Developer Docs
【讨论】:
【参考方案9】:iPad 浏览器不支持文件上传(即使支持也无用,因为 iPad 没有标准的文件浏览器)。文件字段出现时,选择文件按钮呈灰色显示。
【讨论】:
非常正确。太糟糕了,它没有提供从设备中提取图像/歌曲/电影或在 iPad2 外壳中拍照的选项。上传头像/头像是很常见的操作。【参考方案10】:jQuery 的 offset() 不起作用:http://bugs.jquery.com/ticket/6446
【讨论】:
【参考方案11】:iPad Safari 中似乎存在一个错误,其中包含背景图像和背景颜色的 CSS 元素在呈现背景颜色颜色时带有轻微的边框。它应该用背景图像一直填充到渲染元素的边缘。
【讨论】:
【参考方案12】:iPad Safari 在极少数情况下似乎无法处理背景图像,显示奇怪的低层内容线条。
Google 中没有太多关于此的内容(目前)。
【讨论】:
我也注意到了这一点……有时我会在透明的 PNG 图像周围出现细线……这在缩放时更加明显。【参考方案13】:此规则修复了 iOS 设备上 Safari 中的动画闪烁问题:
body -webkit-transform:translate3d(0,0,0);
【讨论】:
是的,但在具有大型 DOM 或具有许多高分辨率图像的页面上请谨慎使用。在这些情况下,它可能会导致 Safari 崩溃,原因尚待确定。 这修复了闪烁但破坏了很多其他东西。【参考方案14】:iPad 上的 Safari 与 iPhone 上的按钮宽度/填充有相同的问题
iPhone <button> padding unchangeable? 描述了这个问题以及删除带有文本的按钮上的填充的解决方案,但是如果您希望按钮比填充本身更窄(例如,对于只有一个小图标的按钮),这对您没有帮助在上面)。为此,我必须用定义宽度和溢出的外部元素围绕按钮:隐藏如下:
<span style="border: solid 1px blue; display: block; width: 16px; overflow: hidden">
<button style="-webkit-appearance: none; border-width: 0"> </button>
</span>
(蓝色边框是为了显示按钮所在的位置,它对 hack 并不重要)
【讨论】:
【参考方案15】:给你更多:
-
无闪光灯
糟糕的 iFrame 支持(因此 facebook 等需要为 iPad 定制实现)
奇怪的缓存限制
HTML textAreas 没有滚动条(您必须用双指滑动 - 这当然非常直观)
一般。将其视为放大的 iPhone,而不是缩小的桌面。
【讨论】:
有关 iframe 问题的更多详细信息? 移动 Safari 上的 iframe 不遵守溢出指令。这里有一些例子:webmanwalking.org/library/experiments/… Mobile Safari 确实尊重溢出,但它没有滚动 UI。您可以使用您已经提到的用于 textareas 的非常直观的双指滑动来滚动它们。 不应该 #2 'iFrames 很糟糕' ;) 【参考方案16】:我认为这可能有用:Apple's guide to preparing web content for the iPad
刚刚被职位发现:解决了我自己的问题
【讨论】:
【参考方案17】:iPad Safari 的 overflow:auto;
元素似乎也存在问题,因此应该显示滚动条 (test page with div's and iframe's)。
【讨论】:
以上是关于已知的“iPad 上的 Safari”与“桌面 Safari”的差异列表的主要内容,如果未能解决你的问题,请参考以下文章
使用 Phonegap 在 iPad 上的 safari 中打开外部 url
Wikipedia 在 iPad 上以不同方式呈现 WkWebView 和 Safari
iPhone 和 iPad 上的 Safari 在缩放时崩溃(双击和捏合)