给HTML时间来呈现它的文本

时间:2015-05-25 09:52:08

标签: javascript html internet-explorer vbscript hta

我有一个非常长的VBScript代码,它在HTA中运行。该脚本包括DOM操作,DLL调用和其他scrips。现在我遇到了一个问题,因为在屏幕上渲染文本需要花费大量时间,因为有很多脚本会暂停HTML解析。

现在我打算创建一个简单的延迟来阻止代码执行,但不会阻止HTML解析。但我不知道该怎么做。

更新

以下是我想要的示例代码(抱歉,请不要介意我是HTA vbs的新语法)

Sub Window_Onload()
    Call Main()
End Sub

Sub Main()
    Dim delay
    el.innerHtml = "Please"
    el2.innerHtml = "Help"
    el3.innerHtml = "me"

    'more scripts here
    'more scripts here
    'more scripts here
    'more scripts here

    el4.innerHtml = "this element is dependent to other scripts"
    el5.innerHtml = "this element is dependent to other scripts"
    el6.innerHtml = "this element is dependent to other scripts"

    delay = 2
    Call PauseAndRenderHtml(delay) 'this function will block the code execution
                                   'but not the html parsing

   'more scripts here

    Do While True
       'very long scripts that loops and pause, loops and pause........
    Loop
End Sub

Sub PauseAndRenderHtml(timeToBreath)
   'Take a breath :)
   'breath/pause for timeToBreath seconds
End Sub

我需要功能PauseAndRenderHtml()

3 个答案:

答案 0 :(得分:1)

也许here描述的计时器可能有所帮助:

<head>
<title>Sample</title>
<HTA:APPLICATION ID="oHTA"
     APPLICATIONNAME="Sample"
>
</head>

<script language="VBScript">
  idTimer = window.setTimeout(GetRef("PausedSection"), 10000, "VBScript")

  Sub PausedSection
    ContinueWork
    window.clearTimeout(idTimer)
  End Sub

  Sub ContinueWork
    'other code here
  End Sub
</script>

<body>
...
</body>

答案 1 :(得分:0)

在页面加载时,将其作为ASP脚本的第一个语句执行

Response.Buffer = false

这应该呈现HTML,直到调用ASP或COM DLL。

但是,由于在ASP中,HTML和Logic位于同一页面中,因此它更加顺序。

注意:默认情况下,Response.Buffer设置为true,并且在处理完页面上的所有脚本之前,或者在调用Flush或End方法之前,服务器不会发送输出

答案 2 :(得分:0)

这就是我使用的。例如,在For循环中,我会在每个循环中调用它,并且它会更新HTML。

'This sleep function produces a near-instant delay for inserting a break in script execution
'mainly for updating HTML in the middle of script execution.
Sub Sleepy
    strCmd = "%COMSPEC% /c"
    objShell.Run strCmd,0,1
End Sub