我的网络应用程序显示"文件"作为垂直的图像序列。
每张图片代表文档的一页。
图像在启动时加载不,而是延迟加载:
对于每个页面,相同大小的占位符(具有灰色背景和指定大小的空div)在启动时放入DOM(在文档就绪时,使用JavaScript例程);
< / LI>当页面进入视口(并在内部停留至少0.25秒)时,它的图像是通过占位符从服务器加载的;
基本上我已经实现了大多数桌面读者的基本行为,如预览或Acrobat Reader:用户浏览文档向上/向下滚动窗口内容。
有些文档有很多页面(300或更多),每页大约850px高:因为300多个灰色占位符被注入DOM ...
网页可能会变成几千像素
当我开始我的项目(大约一年前)时,认为这是浏览器的边界条件:网页不应该是240.000像素高!所以我做了测试(我最初的目标是桌面浏览器)。
令人惊讶 very-tall-web-page
根本不是问题!所有浏览器(包括IE8)都没有受到影响。事实上,JavaScript很轻,DOM包含了合理数量的节点,而且 - 尽管是&#34;逻辑&#34;页面大小很大 - 浏览器很聪明,只能渲染需要在屏幕上显示的内容。
very-tall-web-page
成了问题。
浏览器似乎试图在 ram 中呈现整个网页(!):这涉及到使用大量的cpu,大量的ram和大量的时间(浏览器响应性差) ,滚动和调整大小经常挂起。)
如果我删除了灰色占位符,我添加了固定的背景图案,所有内容......只留下一个长而白的空网页,没有任何变化。
如果我触发图形加速将-webkit-transform: translatez(0);
应用到body
,Safari会在窗口调整大小和滚动时再次响应(只要我留在网页的最顶端)页)。但是,如果我下到中间/底部,那么滚动会再次挂起,页面需要几秒钟才能更新。
至少,重新绘制页面后,调整大小仍会保持响应。
从一开始very-tall-web-page
就是iPad和移动设备上的一个问题。
移动版Safari内存不足,只有10-15页图像文件崩溃。
触发图形加速部分解决了问题。
没有崩溃,但如果我向下滚动太多,它会挂起一段时间而无法渲染页面(它会保持白色)。
我可以在Safari 6/7上使very-tall-web-page
工作吗?
我有什么技巧可以让它在移动浏览器上运行吗?
very-tall-web-page
即使针对桌面浏览器,也应该避免这种情况吗?
问题已在版本 7.1
上的Safari(桌面)上修复