$(document).ready 或 window.onload 用于隐藏/显示视频
$(document).ready or window.onload for hiding/showing a video
我正在运行一个脚本(hack(来欺骗Safari在响应式页面上正确调整视频的大小。下面的脚本等待片刻,然后隐藏,然后显示一个视频,导致 Safari 意识到它应该将视频扩展到适当的大小。
我担心$(document).ready
可能会过早触发脚本(即在加载视频之前(,从而导致脚本无法对视频执行应有的操作。是否有可能在$(document).ready
脚本可能会触发,但由于视频在设置的毫秒后未加载,因此视频不会被隐藏/显示?
我应该使用window.onload
(或其他方法?(来确保我的隐藏/显示尺寸技巧有效吗?
在我的测试中,该脚本大部分工作,即使在我清除缓存时重新加载时也是如此。但是有几次,当我在随机计算机上加载页面时,视频将无法正确调整大小,直到我重新加载页面。使用window.onload
似乎不太理想,因为用户可能会在加载页面内容时注意到大小不正确的视频,或者在加载视频后看到黑客行为。
<script><!-- Super hack to toggle display block/none which tricks Safari into properly sizing video-->
$(document).ready(function() {
$("#video1").delay(3000).hide(0, function() {
$("#video1").delay(3500).show();
});
});
</script>
以下是这两个事件之间的区别:
-
window.onload
在加载完所有内容(即媒体和样式表(后触发。这是一个 DOM 事件 -
$(document).ready()
在加载HTML文档后触发(即最后一个结束标记已加载,媒体和样式表可能尚未加载(。这个事件在技术上是jQuery独有的,但是,如果aailiabe,jQuery实际上使用DOMContentLoaded
DOM事件。
但是,jQuery确实有一个仅在加载所有媒体后触发的事件,$(document).load()
,但是从1.8开始已弃用
如果您希望代码在视频加载之前运行,请使用$(document).ready()
如果您希望代码在视频加载后运行,请使用 window.onload
或 $(document).load()
要回答您的评论:
前提是视频在延迟结束时已加载 (总计到
7.5 seconds
(,您的黑客将起作用。即使视频尚未加载,HTML 元素仍然存在,因此它 甚至可以在视频加载之前隐藏和显示(尽管我是 不确定黑客是否仍然有效,这取决于如何以及何时 Safari 决定视频的大小(。
显然,如果视频尚未加载,则隐藏和显示将不会加载 在视觉上更改任何内容,因为元素是空的/没有内容。
- 使用Jquery.click显示/隐藏切换,适用于新用户,但不适用于种子
- 向下滚动时隐藏菜单,向上滚动时显示,适用于Chrome,不适用于Safari(手机)
- 用于幻灯片放映和隐藏内容的 Angularjs 指令
- 组合用于隐藏或显示内容的方法
- 隐藏html页面中的某些字段以用于打印布局中的页眉/页脚
- 为什么在下面的场景中,用于存储所选文件名和文件路径的隐藏输入字段没有在表单上生成
- 用于显示/隐藏页面的Adobe LiveCycle按钮
- 用于显示和隐藏大量数据的minimy Javascript代码
- 单击另一个用于显示/隐藏图层的按钮时,在Adobe PDF中隐藏/显示按钮的代码是什么
- 我们可以在 jquery ui 选项卡中用于隐藏/显示的不同效果是什么
- 流星 - 创建一个复选框,用于隐藏会话中已完成的决议
- Javascript计算脚本,用于计算表单输入值,然后另存为page2.php的隐藏输入
- 移动隐藏菜单适用于jsfiddle,但不适用于在线.任何解决方案都会有所帮助
- jQuery 图像滑块不适用于 jQuery 显示/隐藏
- jQuery功能,用于隐藏基于未在点击上运行的HTML5数据标签的元素
- 锚点下拉菜单,用于隐藏内容的选项
- 进度条用于隐藏页面,直到页面完全加载
- $(document).ready 或 window.onload 用于隐藏/显示视频
- 无法隐藏页面的某些部分,但相同的代码适用于 JSFiddle
- 切换HTML链接文本'显示/隐藏'显示/隐藏用于注释的内联表单;创建唯一的标识符,这样页面上的所有评论链