我正在建立一个响应式网站。但是在手机上,加载需要很长时间。我认为这是因为javascript。在慢速手机上,执行javascript可能是个问题。因此,如果我隐藏了一些将由javascript处理的元素(display: none
),那些元素的所有脚本都将正常执行或以其他方式执行吗?
也许这是一个糟糕的问题,但有人请解释javascript在这种情况下的工作原理。
答案 0 :(得分:3)
是的,除非您使用的是:visible
选择器,否则jQuery仍会在DOM中找到使用display:none
设置样式的元素。
答案 1 :(得分:2)
JavaScript仍然可以看到这些元素。
有一些很多可能会影响手机的性能,并且有很多事情可以帮助它变得更好(浅CSS选择器,事件委托,非DOM)操作,重组JS是模块化的,并将其延迟加载到页面上,.png优化图像,连接和压缩JS / CSS,用于内存管理的对象池... ...
很多事情要从手机中挤出更多性能......
但是“display:none”不会阻止JS查看或使用这些元素,如果你做了很多查询选择器的话:
$(“#my-div .my-span”)。each(“...”);
这样做会保持正确。
答案 2 :(得分:2)
在HTML元素上将显示设置为none不会阻止在其上执行JavaScript。否则用JavaScript显示和/或隐藏元素会很麻烦。
为了加快您的网站速度,可以使用多种技术。许多都取决于你的情况。听起来你可能会因延迟加载JavaScript而受益,即将它移动到body标签的底部。这样做可以在加载所有JavaScript之前渲染页面。
Google的PageSpeed可能会帮助您指导其他改善页面加载时间的方法。