ошибка JS

FD
На сайте с 19.02.2011
Offline
25
679

Приветствую, есть скрипт который открывает окно и потом ждет пока его не закроют,

var socials = {

myWin : '',

interval : '',

socialBT :function (url, param){

var features, w = 750, h = 770;

var top = (screen.height - h)/2, left = (screen.width - w)/2;

if(top < 0) top = 0;

if(left < 0) left = 0;

features = 'top=' + top + ',left=' +left;

features += ',height=' + h + ',width=' + w + ',resizable=0, toolbar=0, scrollbars=yes';

socials.myWin = window.open(url+param, 'displayWindow', features);

socials.interval = setInterval(function(){

if(socials.myWin != null)

{

if(socials.myWin=='' || socials.myWin.closed)

{

alert('OK');

clearInterval(socials.interval);

}

}

},500);

}

}

Но в некоторых ситуациях возникает ошибка

Permission denied to access property 'valueOf'

[Прерывать на этой ошибке] if(socials.myWin=='' || socials.myWin.closed)

Я не могу понять с чем она связана и не могу ее решить. Ошибка возникает в ФФ. Возможно кто то сталкивался и знает решение этой проблемы?

DiAksID
На сайте с 02.08.2008
Offline
236
#1
free-dev:
... Я не могу понять с чем она связана и не могу ее решить. Ошибка возникает в ФФ. Возможно кто то сталкивался и знает решение этой проблемы?

фдуке('OK'); ;)

show must go on !!!...
FD
На сайте с 19.02.2011
Offline
25
#2
DiAksID:
фдуке('OK'); ;)

Сори за опечатку)), конечно же alert('OK'); но это не та ошибка, вопрос так и остается открытым(

gormarket
На сайте с 29.12.2010
Offline
47
#3

free-dev, попробуйте такой вариант ("or" вместо "||")

if(socials.myWin=='' or socials.myWin.closed)

Или еще так

if(socials.myWin)

вместо

if(socials.myWin != null)

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
FD
На сайте с 19.02.2011
Offline
25
#4

gormarket, спасибо за вариант, но к сожалению он не помог. Но вроде я разобрался в чем проблема когда идет проверка каждую 0.5 секунды if(socials.myWin=='' || socials.myWin.closed) по началу пока модальное окно не загрузилось условие socials.myWin=='' имеет место быть, но вот потом socials.myWin принимает значение windowObject и данное условие уже не верно и ФФ ругается на то что так делать нельзя. Пришлось отказатся от socials.myWin=='' и оставить условие if(socials.myWin.closed), НО это не нравится опере 11.11, она выдает Uncaught exception: ReferenceError: Security error: attempted to read protected variable: closed Есть возможность как то кроссбраузерно проверить закрыто окно или нет?

DiAksID
На сайте с 02.08.2008
Offline
236
#5
free-dev:
gormarket, спасибо за вариант, но к сожалению он не помог. Но вроде я разобрался в чем проблема когда идет проверка каждую 0.5 секунды if(socials.myWin=='' || socials.myWin.closed) по началу пока модальное окно не загрузилось условие socials.myWin=='' имеет место быть, но вот потом socials.myWin принимает значение windowObject и данное условие уже не верно и ФФ ругается на то что так делать нельзя. Пришлось отказатся от socials.myWin=='' и оставить условие if(socials.myWin.closed), НО это не нравится опере 11.11, она выдает Uncaught exception: ReferenceError: Security error: attempted to read protected variable: closed Есть возможность как то кроссбраузерно проверить закрыто окно или нет?

заменить:

socials.myWin:'' на socials.myWin:null

socials.myWin=='' на socials.myWin==null

или вообще проверять typeof(socials.myWin)

как вариант

gormarket
На сайте с 29.12.2010
Offline
47
#6

еще одно предложение:

попробуйте вынести вывод сообщения за пределы функции в setInterval

вместо

alert('OK');

использовать

setTimeout("alert('OK')", 100);

Или просто поменяйте местами две строки

сначала

clearInterval(socials.interval);

и только потом

alert('OK');

(к сожалению добиться появления ошибки с моими браузерами не удается, все работает)

FD
На сайте с 19.02.2011
Offline
25
#7

Спс всем за предложения, в данный момент привел скрипт к виду

var socials = {

myWin : null,

interval : '',

socialBT :function (url, param){

var features, w = 750, h = 770;

var top = (screen.height - h)/2, left = (screen.width - w)/2;

if(top < 0) top = 0;

if(left < 0) left = 0;

features = 'top=' + top + ',left=' +left;

features += ',height=' + h + ',width=' + w + ',resizable=0, toolbar=0, scrollbars=yes';

socials.myWin = window.open(url+param, 'displayWindow', features);

socials.interval = setInterval(function(){

if(socials.myWin != null)

{

if(socials.myWin.closed == true)

{

//alert(socials.myWin.closed);

alert('OK');

socials.myWin = null;

clearInterval(socials.interval);

}

}

},500);

}

}

В ФФ работает, во всем нелюбимом ИЕ тоже, а вот опера ругается "Uncaught exception: ReferenceError: Security error: attempted to read protected variable: closed" неужели опера не знает closed?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий