Коллеги,
кто-нибудь сталкивался со следующей проблемой?
Создаем html файл следующего содержания:
<html>
<script language="VBScript">
dim nCount
nCount = 0
Class Test
Sub Ping(a)
nCount = nCount + 1
if nCount > 15 then exit sub
Me.Ping a
End Sub
End Class
Sub window_onLoad
on error resume next
Set o = New Test
o.Ping "a"
MsgBox nCount & vbCr & Err.Description
End Sub
</script>
</html>
После завершения выполнения скрипта, IE выдает:
"Stack overflow at line: 0"
Причем стек разворачивается обратно. Никакой ошибки VBS-runtime не возникает.
Смысл здесь в вызове методов объектов.Рекурсия непричем. Можно сделать последовательные вызовы разных методов, это не играет роли. Вызовы window.имя_глобальной_функции приводят к тому же.
Попробовали даже так извратиться:
<HTML>
<HEAD>
<SCRIPT LANGUAGE="VBScript">
Option explicit
dim oVBS
Sub IinitializeVbsEngine()
set oVBS = createObject("MSScriptControl.ScriptControl")
oVBS.Language = "VBScript"
oVBS.AddObject "window", window, true
End sub
Class Test
public nCount
function Ping(a)
nCount = nCount + 1
if nCount > 15 then
exit function
end if
Me.Ping a
End function
End Class
Sub Window_OnLoad()
MsgBox "Start"
IinitializeVbsEngine
oVBS.AddObject "Test", new Test, true
oVBS.ExecuteStatement "Ping 10"
End sub
</SCRIPT>
</HEAD>
Результат тот же!