用于隐藏/显示视频的$(document).ready或window.onload

时间:2016-02-05 14:54:09

标签: javascript html5 delay document-ready

我正在运行一个脚本(黑客)来诱骗Safari在响应式页面上正确调整视频大小。下面的脚本等待片刻然后隐藏,然后显示一个视频,导致Safari意识到它应该将视频扩展到适当的大小。

我担心mvn dependency:tree -Dincludes=name_of_dependency:name_of_dependecy 可能会过早地启动脚本(即,在加载视频之前),从而导致脚本不对视频执行应该执行的操作。是否可能使用$(document).ready脚本可能会触发,但由于视频未在设定的毫秒后加载,视频将不会被隐藏/显示?

我应该使用$(document).ready(或其他方法吗?)来确保我的隐藏/显示大小调整是否有效?

在我的测试中,脚本大部分都可以工作,即使在我清除缓存时重新加载也是如此。但有几次,当我在随机计算机上加载页面时,视频将无法正确调整大小,直到我重新加载页面。使用window.onload似乎不太理想,因为用户在加载页面内容时可能会注意到视频大小不正确,或者在操作后看到黑客行为。

window.onload

1 个答案:

答案 0 :(得分:2)

以下是两个事件之间的区别:

    在加载完所有内容(即媒体和样式表)后,
  • window.onload被触发。这是一个DOM事件

  • 加载HTML文档后触发
  • $(document).ready()(即最后一个结束标记已加载,媒体和样式表可能尚未加载)。这个事件在技术上对jQuery是唯一的,但是,如果aailiabe,jQuery实际上使用DOMContentLoaded DOM事件。

然而,jQuery确实有一个只在所有媒体加载后才会触发的事件$(document).load(),但是自1.8以来不推荐这样做

如果您希望代码在加载视频之前运行,请使用$(document).ready()

如果您希望代码在视频加载后运行,请使用window.onload$(document).load()

回答你的评论:

  

如果视频在延迟完成时已加载   (总计为7.5 seconds),你的黑客会工作。

     

即使视频未加载,HTML元素仍然存在,所以它   甚至可以在视频加载之前隐藏和显示(尽管我是   不确定黑客是否仍然有效,这取决于如何以及何时   Safari决定视频的大小。

     

显然,如果视频没有加载,隐藏和显示则不会   视觉上改变任何东西,因为元素是空的/没有内容。