window.frameElement 是null

在页面parent.html中写一个iframe src=child.html 在child.html中使用window.frameElement返回null

问题出现的环境背景及自己尝试过哪些方法

相关代码

parent.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <h3>这个父页面</h3>
    <iframe id="iframe" src="./child.html" width="500" height="300"></iframe>
    <script src="./parent.js"></script>
</body>
</html>

child.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <h3>这个孩子页面</h3>
    <script src="./child.js"></script>
</body>
</html>

child.js

console.log('在子页面中iframe获取自己的引用 window.frameElement', window.frameElement);

iframe是一个窗口但是不是顶层窗口,所以不应该是null。

MDN上说“返回嵌入当前window对象的元素(比如 <iframe> 或者 <object>),如果当前window对象已经是顶层窗口,则返回null.”
问题是child.js 不是顶层窗口啊,为什么也是null?还是我哪里理解有问题?

阅读 5.2k
2 个回答
新手上路,请多包涵

老哥,这个问题原因找到了吗?找到的话方便解释一下么

window.frameElement属性主要用于当前窗口嵌在另一个网页的情况(嵌入<object>、<iframe>或<embed>元素),返回当前窗口所在的那个元素节点。如果当前窗口是顶层窗口,或者所嵌入的那个网页不是同源的,该属性返回null。

详见2.3-2.5
http://javascript.ruanyifeng....

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题