所有浏览器都支持window.frameElement(对于同源iframe)吗?

时间:2014-04-24 14:05:28

标签: javascript internet-explorer iframe safari webkit

我尽可能多地使用Google搜索,并且我不确定iframe的文档是否支持在父窗口中获取自身的ID:window.frameElement.id。有这么多浏览器,很难对它们进行全面测试,而且网上似乎没有任何信息。我特别想知道:

的Safari iOS Safari Windows Phone IE IE 7,8,9,10,11

(我测试了Firefox和Chrome,他们都工作过。)

示例IFRAME内容

<!DOCTYPE HTML>
<html>
    <head></head>
<body>
        <script type="text/javascript">
            var owner = window.frameElement;
            var thisIsWhoIsCalling = ( owner !== null ) ? owner.id : null;
            window.parent.SomeJavaScriptObject.someFunction( thisIsWhoIsCalling );
        </script>
    </body>
</html>

2 个答案:

答案 0 :(得分:4)

我碰巧寻找相同的信息。 这是我找到的。

https://developer.mozilla.org/en-US/docs/Web/API/Window.frameElement

除了MDN文档之外,我还测试了一些浏览器,并确认IE7 +,Safari,Firefox,Chrome都支持它。几乎所有的浏览器都是如此。

我没有在IE6上测试过,但我想你不需要关心。

答案 1 :(得分:0)

var frame = window.frameElement;  //Get <iframe> element of the window
if (frame) { window.location.href = "/403.shtml"; ...

此代码在浏览器中不适合我(FF,Chrome,IE) 更喜欢这个,工作正常,跨浏览器...

  if (window.self === window.top) window.location.href = "/403.shtml";
//or if (window.self !== window.top) window.location.href = "/403.shtml";