我的网页webpage link使用了3个javascripts。 TabSlideOut脚本,SmoothDivScroll脚本和TN3图像库脚本。
第一次加载页面或重新加载TN3图像库的脚本时运行一段时间,因为必须加载许多图像,这需要时间。
在此期间,SmoothDivScroll的脚本将等待,并且仅在TN3图像库的脚本完成时执行。因为在此期间页面看起来非常难看,因为SmoothDivScroll脚本的图像一个接一个地显示,而不是像执行SmoothDivScroll脚本时那样平滑地滚动。重新加载页面时可以看到这一点。
我想要实现的是首先执行SmoothDivScroll的脚本,然后才能执行TN3图像库的脚本。或者其他任何可以阻止网页在重新加载时看起来很难看的东西。
我不是一个非常有经验的网络实施者,我没有javascript编程知识。我试了两天才找到解决办法,但我很挣扎。我希望有人可以帮助解决我的问题。感谢
答案 0 :(得分:2)
我打算称这是一个FOUC问题;例如,“无格式内容的Flash”。很普通的。自20世纪末以来一直存在,Safari因此而臭名昭着。
简答:最初使用内联样式在元素上设置visibility:hidden
。然后使用JavaScript在加载后设置visibility:visible
。
通常,解决方案是在加载内容之前隐藏内容,然后在内容准备好后显示内容。通常在加载内容时,您将显示某种类型的微调器。
从技术上讲,有很多方法可以做到这一点。您可以切换CSS display
,visible
和/或opacity
设置。你可以显示一个高z-index
的叠加div - 我用id="veil"
称之为“面纱” - 然后在加载内容时将其删除,并使用微调器作为面纱。你也可以将它们完全移出屏幕,直到它们被加载,然后将它们移动到位。您可以组合这些方法。
我个人使用CSS visibility
属性获得了跨浏览器和跨设备的最佳成功。我喜欢它如何为布局中的对象保留空间。其他解决方案有时会出现在移动设备和一些旧版浏览器上。这里有几个片段可以帮助您入门。
首先,使用内联样式将可见性设置为none - 免责声明:我不喜欢内联样式,并且理解关注点分离的概念。在这种情况下,我认为这是必要的,因为它必须具有最高的级联优先级,尽可能快地应用,并且我在跨环境方面取得了很好的成功。纯粹主义者会争辩说这应该放在CSS文件中,但我相信我们不应该教条地遵循任何指导原则;有时我们必须有勇气在有充分理由的情况下违反惯例。让读者决定。
<div id="pan-content" class="clearfix" style="visibility:hidden">
然后,在页面加载(使用jQuery):
$('#window').load( function() {
$('#pan-content').css({visibility:'visible'});
});
这可能会有点慢,因为你要等到整个窗口加载,直到你显示横幅。您还可以将事件附加到特定资源,这将加快速度。见以下帖子:
Detect image load
希望这有帮助!
答案 1 :(得分:0)
您不应该仅仅依靠脚本的顺序来确定您的执行。将您的来电TN3
置于SmoothDivScroll
complete
方法中调用的函数中。
使用非缩小版本可能最容易做到这一点。