我正在运行一个脚本(黑客)来诱骗Safari在响应式页面上正确调整视频大小。下面的脚本等待片刻然后隐藏,然后显示一个视频,导致Safari意识到它应该将视频扩展到适当的大小。
我担心mvn dependency:tree -Dincludes=name_of_dependency:name_of_dependecy
可能会过早地启动脚本(即,在加载视频之前),从而导致脚本不对视频执行应该执行的操作。是否可能使用$(document).ready
脚本可能会触发,但由于视频未在设定的毫秒后加载,视频将不会被隐藏/显示?
我应该使用$(document).ready
(或其他方法吗?)来确保我的隐藏/显示大小调整是否有效?
在我的测试中,脚本大部分都可以工作,即使在我清除缓存时重新加载也是如此。但有几次,当我在随机计算机上加载页面时,视频将无法正确调整大小,直到我重新加载页面。使用window.onload
似乎不太理想,因为用户在加载页面内容时可能会注意到视频大小不正确,或者在操作后看到黑客行为。
window.onload
答案 0 :(得分:2)
以下是两个事件之间的区别:
window.onload
被触发。这是一个DOM事件
$(document).ready()
(即最后一个结束标记已加载,媒体和样式表可能尚未加载)。这个事件在技术上对jQuery是唯一的,但是,如果aailiabe,jQuery实际上使用DOMContentLoaded
DOM事件。
然而,jQuery确实有一个只在所有媒体加载后才会触发的事件$(document).load()
,但是自1.8以来不推荐这样做
如果您希望代码在加载视频之前运行,请使用$(document).ready()
如果您希望代码在视频加载后运行,请使用window.onload
或$(document).load()
回答你的评论:
如果视频在延迟完成时已加载 (总计为
7.5 seconds
),你的黑客会工作。即使视频未加载,HTML元素仍然存在,所以它 甚至可以在视频加载之前隐藏和显示(尽管我是 不确定黑客是否仍然有效,这取决于如何以及何时 Safari决定视频的大小。
显然,如果视频没有加载,隐藏和显示则不会 视觉上改变任何东西,因为元素是空的/没有内容。