2011-10-20 237 views
0

正常流程是让JavaScript操作DOM。例如,我在openDatabase上有一个事务executeSql的回调。该回调操纵DOM将结果添加到div中。通过JavaScript加载暂停页面

但我有一个特殊的情况,页面必须正确加载到全部。是的,这是正确的 - 我全部用了这句话。

问:有没有一种方法让JavaScript暂停页面加载,直到调用回调函数回调?

我想我将不得不使用document.write而不是$('body')。append()。

+0

忽略“全部”应该让你被禁止,我不清楚订单。你想在运行javascript之前等待加载HTML /页面资源?或者你需要等待服务器端完成? –

+0

不知道你在这里问什么。您是否在所有ajax调用完成之前不显示任何数据?您的内容是否在HTML页面中,或者您是否全部使用JS动态编写它? –

+0

当executeSql被回调时,我填充一个div。但我的要求是,当页面加载时,而不是页面加载后正确填充div,这是回调发生的时间。 –

回答

3

听起来好像您正在进行回调,当页面加载开始时启动,但您不希望页面在回调完成之前显示。

无论确切的情况如何,答案似乎很简单。

如果您不想在某个事件完成之前加载页面,请在服务器上同步执行,而不是在客户端上异步启动页面。那么在完成之前,你将不会提供任何服务,因此什么也不会出现。

如果由于某些原因,这是不可能的,那么将所有内容渲染为“隐藏”,并在回调完成时显示它。

+0

jamietre,谢谢你。我指的是一个蓝牙设备,它读取html输出并显示一个特定的id。问题是,如果JavaScript改变了标识元素内的文本,那么蓝牙设备看到这个改变为时已晚。 –

+0

客户端需要应用程序在本地运行,因此无法在服务器上同步执行。 –

+0

我不确定这个设备可能有什么限制,但是你可以只做后一个想法,并且最初将其渲染为“display:none”,并且在脚本准备就绪时将其显示出来?在一天结束的时候,没有办法“暂停”页面加载 - 你可以让你的内容在你准备好之后(从服务器)发布,或者你可以以一种不渲染的方式发布它,然后当你准备好时渲染它。使用“display:none”是完成后者的最简单方法,尽管你也可以编码它并作为JSON数据或其他东西传递,但我无法想象为什么你需要它。 –