Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   top.eval() (https://javascript.ru/forum/misc/1687-top-eval.html)

Snipe 03.09.2008 16:19

top.eval()
 
Ситуация простая, в функции эвалим вновь создаваемую переменную, надо чтоб эта переменная была глобальной.
Придумал вот такой вариант:
function doEval() {
    top.eval('var punkt="punt"');
}
doEval();
alert(punkt);

Т.е. просто перед eval поставить top.

Зачем я написал этот топик? Интересно просто, так вообще катит или есть еще какие-нибудь способы? =)

ZoNT 03.09.2008 16:20

Не понял?
А просто без var она глобальная разве не станет???

Kolyaj 03.09.2008 16:23

Как и ожидалось в ИЕ не работает. Надо так
function doEval(str) {
  window.execScript ? window.execScript(str) : window.eval.call(window, str);
}

Snipe 03.09.2008 16:26

Цитата:

Сообщение от ZoNT (Сообщение 5271)
Не понял?
А просто без var она глобальная разве не станет???

*очень много кода уже написано с var'ами. %)
А так, конечно, все было бы на отлично.

ZoNT 03.09.2008 16:28

Скажи, что требуется, я так и не понял, почему нельзя обойтись без вара?

Snipe 03.09.2008 16:39

Цитата:

Сообщение от ZoNT (Сообщение 5274)
Скажи, что требуется, я так и не понял, почему нельзя обойтись без вара?

Есть куча уже написанных страничек, в которых используются скрипты c var (аяксом это все дело грузится). Ну и плюс не все страницы обновляются мной лично, чтоб следить "никто ли var не аписал".

Snipe 03.09.2008 16:42

Kolyaj, спасибо.

Snipe 03.09.2008 16:56

Kolyaj, не работает в сафари под виндой =\

ZoNT 03.09.2008 17:08

и что мешает убрать реплейсом вар и выполнить эвалом?
Будет и кроссбраузерно и не надо всякие top.eval придумывать.

Только я не вижу смысла в переделке переменной в глобальную...

Snipe 03.09.2008 17:16

Цитата:

Сообщение от ZoNT (Сообщение 5284)
и что мешает убрать реплейсом вар и выполнить эвалом?
Будет и кроссбраузерно и не надо всякие top.eval придумывать.

Видимо так и придется делать, просто var может попасться не только в глобальном контексте, но и в какой-нибудь функции.

Цитата:

Только я не вижу смысла в переделке переменной в глобальную...
Смысл прост, при первой загрузке аяксом создается переменная, которую используем потом. А она получается локальной в функции которая выолняет eval.


Часовой пояс GMT +3, время: 20:30.