2014-01-30 37 views
1

我的网页webpage link使用3个javascripts。一个TabSlideOut脚本,一个SmoothDivScroll脚本和TN3图片库脚本。如何定义javascript执行顺序

第一次加载页面或重新加载TN3图片库的脚本运行一段时间后,因为许多图片必须加载,这需要时间。

在此期间,SmoothDivScroll的脚本将等待并且仅在完成TN3图库的脚本时执行。因为在这段时间内页面看起来非常难看,因为SmoothDivScroll脚本的图像会一个接一个地显示出来,而不是像执行SmoothDivScroll脚本时那样平滑滚动。您可以在重新加载页面时看到此内容。

我想实现的是,SmoothDivScroll的脚本首先执行,然后才能执行TN3图库的脚本。或其他任何可以阻止网页在重新加载时看起来很难看的东西。

我不是一个非常体贴的web实现者,我没有javascript编程知识。我尝试了两天寻找解决方案,但我挣扎。我希望有人能帮助解决我的问题。谢谢

+0

更改加载脚本的顺序。但是如果它们相互依赖,则可能无法工作。另一个解决方法是隐藏元素(用css),直到你的脚本全部完成了他们的工作,然后使它们再次可见(用Javascript)。缺点是,如果有人没有启用Javascript,他们会盯着一个空白页面。 –

+0

实际上,您可以从html代码中看到,顺序是SmoothDivScroll脚本在TN3图像库脚本之前启动,但即使如此,SmoothDivScroll脚本在TN3图像库脚本完成之前仍未完成。我希望有一种方法来定义脚本将以何种顺序加载,或者可以定义脚本“B”只在脚本“A”完成时才开始运行。 – afrikapit

回答

0

你不应该简单地依靠脚本的顺序来确定你的执行。将您的呼叫TN3放入一个在SmoothDivScrollcomplete方法中调用的函数中。

这可能是最简单的使用非缩小版本来做到这一点。

+0

谢谢你的回答。这听起来对我来说很容易和逻辑。不幸的是,我不是JS程序员,所以我不知道如何将TN3放入SmoothDicScroll complete函数中调用的函数中。你能举个例子吗? – afrikapit

+0

stewart715你有一个例子如何将TN3放入函数中,以及如何将SmoothDicScroll complete方法添加到TN3查询js文件中。正如我所说,不幸的是,我不是一个JS程序员。 – afrikapit

2

我打算称之为FOUC问题;例如“无风格内容的Flash”。很常见。自从20世纪后期以来,Safari就因此而臭名昭着。

简短的回答:最初设置visibility:hidden您的元素与内联风格。然后使用JavaScript在加载后设置visibility:visible

通常,解决方案是隐藏内容直到加载内容,然后在准备就绪时显示它。通常在内容加载时,您将显示某种类型的微调器。

从技术上讲,有很多方法可以做到这一点。您可以切换CSS display,visible和/或opacity设置。你可以用高z-index(我称之为“面纱”id="veil")显示覆盖div,然后在加载内容时将其删除,并使用微调器作为面纱。您也可以将事物从屏幕上完全移出,直到它们已经加载完毕,然后将它们移动到位。你可以结合这些方法。

就我个人而言,我已经获得了跨浏览器和跨设备与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

希望这会有所帮助!

+0

我可以根据您的建议解决问题。我发现这个页面http://javascript.about.com/library/blanim02.htm,它解释了如何以我可以遵循的方式做到这一点,即使没有广泛的JavaScript知识。谢谢 – afrikapit