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

Javascript 为什么这个窗口对象没有eval函数?,javascript,internet-explorer,yui,eval,mshtml,Javascript,Internet Explorer,Yui,Eval,Mshtml,我在on IE中遇到了一个有趣的(?)问题。当查看用作浏览器的内容可编辑框架的窗口对象时,我发现eval函数未定义(通过运行以下命令) 这只发生在IE上(我检查了IE6和IE8),而在Firefox或Chrome上不会发生 所有其他函数和属性似乎都是有序的,现在我意识到eval并不是在窗口上定义的,而是在全局对象上定义的,但我的理解是,在浏览器中窗口是全局对象(另外,eval也会出现在所有其他窗口上,为什么不出现在这个窗口上?) 是否有人知道这是否是IE中的已知缺陷/限制,以及我如何在该框架的全

我在on IE中遇到了一个有趣的(?)问题。当查看用作浏览器的内容可编辑框架的
窗口
对象时,我发现
eval
函数未定义(通过运行以下命令)

这只发生在IE上(我检查了IE6和IE8),而在Firefox或Chrome上不会发生

所有其他函数和属性似乎都是有序的,现在我意识到
eval
并不是在
窗口上定义的,而是在全局对象上定义的,但我的理解是,在浏览器中
窗口
是全局对象(另外,
eval
也会出现在所有其他窗口上,为什么不出现在这个窗口上?)


是否有人知道这是否是IE中的已知缺陷/限制,以及我如何在该框架的全局对象上下文中进行
eval
(我需要该框架中运行的任何东西都有副作用).

我不久前发现,通过首先使用
execScript
,您可以在IE中使
eval
神奇地出现在iframe的窗口对象中:

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

这里不是故意吹嘘eval是eval horn,但也许有另一种方法可以实现您不使用
eval
?没有人会与您争论eval是eval…谢谢Tim,我尝试了它并得到了“访问被拒绝”:
javascript:尝试{document.getElementById(“editor\u editor”).contentWindow.execScript('null')}catch(ex){alert(ex.message)}
噢。这在我动态创建的iframe上对我有效。我希望
eval
也不起作用。我能想到的是,这可能是因为YUI编辑器使用了一个
数据:
URL作为iframe的
src
,这可能会导致IE阻止访问,因为iframe URL使用了不同的协议ol到主文档的URL。当我查看
src
时,我在IE中看到
javascript:false
数据:…
用于Firefox,但不用于IE),我会继续挖掘。如果你有什么想法,请再次发帖:我也想知道答案。这方面没有进展(其他事情优先考虑),但我确实发现了(在IE8中)如果附加了调试器,则不会发生这种情况。。。
function evalIframe(iframeWin, command) {
    if (!iframeWin.eval && iframeWin.execScript) {
        iframeWin.execScript("null");
    }
    if (iframeWin.eval) {
        iframeWin.eval(command);
    } else {
        alert("No eval!");
    }
}