Не удается выполнить программу из освобожденного сценария.
23 Май 2007
Недавно столкнулся с токой проблемой, что в IE из одного фрейма, нельзя расширить объект, в другом фрейме. Нет вообще можно, но при обновлении страницы новые свойства/методы не сохраняються. Для большей наглядности приведу код :
index.html
<html>
<head>
<title>Frameset</title>
</head>
<script type="text/javascript">
var Obj = Function();
Obj.prototype = {
extend : function(name, func)
{
if (!this[name]) // comment this line
this[name] = func;
}
}
var object = new Obj();
</script>
<frameset rows="*">
<frame id="main" name="main" src= "frame.html" noresize scrolling="No"></frame>
<noframes/>
</frameset>
</html>
frame.html
<html>
<head>
<title>Frame</title>
</head>
<body>
<script type="text/javascript">
window.parent.object.extend('foo',function(){alert('this is extendering function!');});
window.parent.object.foo();
</script>
<input type="button" value="refresh" onclick= "window.location.reload(false);">
</body>
</html>
Так вот первый раз скрипт срабатывает на "ура", а при нажатии на кнопку вылазит ошибка "Can't execute code from a freed script". В остальных браузерах все пучком.
Пока сам выяснял в чем дело обнаружил, что такая проблема недавно наблюдалась в Dojo с тултипами...
Решение проблемы простое - не расширять объекты из других фреймов или не проверять и если уже такой существует и расширять каждый раз.
Свежие комментарии