Почему этот оконный объект не имеет функции eval? - PullRequest
2 голосов
/ 27 апреля 2010

Я столкнулся с интересной (?) Проблемой в YUI rich edit в IE. При просмотре объекта window для редактируемого содержимого фрейма, используемого в качестве браузера, я вижу, что функция eval не определена (запустив следующее).

javascript:alert(document.getElementById("editor_editor").contentWindow.eval)

Это происходит только в IE (я проверял в IE6 и IE8), а в Firefox и Chrome -

.

Все остальные window функции и свойства, кажется, в порядке, теперь я понимаю, что eval это не совсем , определенный на window, но на глобальном объект, но я понимаю, что в браузерах window является глобальным объектом (также eval действительно появляется во всех других окнах, так почему бы не в этом?).

Кто-нибудь знает, является ли это известной ошибкой / ограничением в IE и как я могу добраться до eval в контексте глобального объекта этого фрейма? (Мне нужно, чтобы побочные эффекты были доступны для всего, что работает в этом кадре).

1 Ответ

3 голосов
/ 27 апреля 2010

Некоторое время назад я обнаружил, что вы можете волшебным образом отобразить eval в объекте окна iframe в IE, используя сначала execScript:

function evalIframe(iframeWin, command) {
    if (!iframeWin.eval && iframeWin.execScript) {
        iframeWin.execScript("null");
    }
    if (iframeWin.eval) {
        iframeWin.eval(command);
    } else {
        alert("No eval!");
    }
}
...