首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$(document).ready或window.onload用于隐藏/显示视频

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

Stack Overflow用户
提问于 2016-02-05 14:54:08
回答 1查看 1.7K关注 0票数 2

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

我担心$(document).ready可能会太快地启动脚本(即在加载视频之前),从而导致脚本不做它应该对视频做的事情。是否有可能使用$(document).ready脚本触发,但是由于视频没有在设置的毫秒之后加载,视频就不会被隐藏/显示?

我应该使用window.onload (或者其他方法吗?)而是为了确保我的隐藏/显示大小攻击有效?

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

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-07 17:57:08

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

  • 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如何以及何时决定视频的大小)。 显然,如果没有加载视频,隐藏和显示不会在视觉上改变任何东西,因为元素是空的/没有内容。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35227044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档