Я использую приведенный ниже код для написания кода для запроса веб-метода за указанный интервал.
сейчас в this.Poll функции я должен сделатьКак получить имя экземпляра объекта
this.tmo = setTimeout(this.strInstanceName + ".Poll()", this.iInterval);
вместо
this.tmo = setTimeout(this.Poll(), this.iInterval);
потому, что IE теряет этот указатель после SetTimeout
Так что я должен пройти это класс имя экземпляра:
var objPoll = new cPoll("objPoll");
Как я могу получить имя экземпляра без передачи его в качестве параметра?
Я хочу, чтобы он был там!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Intervall-Test</title>
<script type="text/javascript" language="javascript">
function test()
{
alert("Test");
test.tmo = setTimeout(test, 2000);
test.Clear = function()
{
clearTimeout(test.tmo);
}
}
function cPoll(strInstanceName)
{
this.strInstanceName = strInstanceName ;
this.iInterval = 2000;
this.tmo=null;
this.cbFunction=null;
this.Poll = function()
{
this.cbFunction();
this.tmo = setTimeout(this.strInstanceName + ".Poll()", this.iInterval);
}
this.Start = function(pCallBackFunction, iIntervalParameter)
{
if(this.tmo != null)
this.Stop();
if(iIntervalParameter && iIntervalParameter > 0)
this.iInterval=iIntervalParameter;
this.cbFunction=pCallBackFunction;
if(this.cbFunction!=null)
this.Poll();
else
alert("Invalid or no callback function specified");
}
this.Stop = function()
{
if(this.tmo != null)
{
clearTimeout(this.tmo);
this.tmo=null;
}
}
}
function CallBackFunction()
{
alert("PollCallBack");
}
// test();
// test.Clear();
var objPoll = new cPoll("objPoll");
</script>
</head>
<body>
<h1>Test</h1>
<input type="Button" value="Start polling" onclick="objPoll.Start(CallBackFunction,3000);" />
<input type="Button" value="Stop polling" onclick="objPoll.Stop();" />
</body>
</html>
удары Disaster даже без скобок. Вы используете IE! = 8? –
Сделайте этот трюк с помощью 'self' J-P, который выложил тогда. Если это не сработает, ваш объект будет GC'd (или не был создан), прежде чем вы вызовете 'Start'. Итак, убедитесь, что objPoll существует до того, как вы вызываете 'Start()' и пытаетесь потерять 'var' перед' objPoll = new cPoll ("objPoll"); ' – vava
GC возможен, но он есть, когда я нажимаю Start, потому что Начинается вызов из экземпляра. Если бы этого не было, это не началось бы. –