Siesta:"不能从一个释放的脚本执行代码"

时间:2015-01-16 16:37:15

标签: internet-explorer window page-refresh preload siesta

我有一个测试场景,我需要在登录和退出页面后从窗口对象访问预加载的文件。

线束配置是:

var Harness = Siesta.Harness.Browser.ExtJS;
    Harness.configure({
        preload : [
            'vuxtest.js' 
        ],
        hostPageUrl : '../vux/',
        performSetup : false
    });

测试对象是:

 {  
    url : 'Test.js',
    separateContext : true
 }

预加载的文件vuxtest.js设置window.vuxtest对象。

Test.js的骨架包括:

startTest(function(test) {

   var vuxtestObj = test.global.vuxtest; ...

    vuxtestObj.run(test, 'Icons', function() { 

       test.it('Sign out - Sign in - Test Grid '+ row, function(t) {

           t.chain(
                   //sign out
                   {
                       ...
                   },
                   //sign back in
                   {
                       ...
                   },
                   //call function from vuxtestObj
                   {
                        vuxtestObj.funcA();
                   }
           );
         });
    });
});

此代码适用于Chrome但不适用于IE,因为它在vuxtestObj.funcA()中出现错误:无法从已释放的脚本执行代码。知道我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

在执行请求后出现一些延迟后,似乎从定义它的对象中卸载了回调。您通常会在IE中发生此消息,但其他浏览器只是忽略。

尝试将回调包装在try-catch块中:

try {
   t.chain(
   //sign out
   {
       ...
   },

   //sign back in
   {
       ...
   },

   //call function from vuxtestObj
   {
      vuxtestObj.funcA();
   }
   );
}
catch(err) {

}