代码之家  ›  专栏  ›  技术社区  ›  Motti

为什么这个窗口对象没有eval函数?

  •  2
  • Motti  · 技术社区  · 15 年前

    我遇到一个有趣的(?)中的问题 YUI rich edit demo 当看到 window 对象作为浏览器使用,我看到 eval 函数未定义(通过运行以下命令)。

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

    这只发生在IE上(我在IE6和IE8上查过),而在Firefox或Chrome上没有。

    其他的 window 功能和属性似乎都很好,现在我意识到 评价 不是真的 定义于 窗口 但是在全局对象上,我的理解是在浏览器中 窗口 全局对象(也 评价 是否出现在所有其他窗口上,所以为什么不出现在这个窗口上?).

    有人知道这是否是IE中的一个已知缺陷/限制,以及我如何才能达到 评价 在这个框架的全局对象的上下文中?(我需要的副作用,可用于任何运行从这个框架)。

    1 回复  |  直到 15 年前
        1
  •  3
  •   Tim Down    15 年前

    我发现很久以前你可以 eval 通过使用 execScript 第一:

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