在父网页的 iframe 中运行 JavaScript

Posted

技术标签:

【中文标题】在父网页的 iframe 中运行 JavaScript【英文标题】:Running JavaScript in an iframe on the parent webpage 【发布时间】:2016-09-07 13:43:26 【问题描述】:

我有一个需要倒数计时器的网页,但倒数计时器的 javascript 代码是在 iframe 中与其他页面内容一起生成的。我需要使用 Javascript 将此内容推送到父框架中:

document.getElementById('contentarea').innerhtml = 
    "Please Wait... Countdown is loading FOO";

而FOO的一部分是倒计时码……

<script>
var upgradeTime = 186000; //no of seconds
var seconds = upgradeTime;
function timer() 
    var days = Math.floor(seconds/24/60/60);

//The Code doesn't end here but let me not bore anyone
</script>

如何实现这一点,以便注入的 JavaScript 代码在父页面上运行?

【问题讨论】:

如果使用相同的来源,你可以使用parent,但听起来你应该只使用script标签并完全放弃iframe @AlexanderO'Mara 他们说他们也在iframe 中加载内容。 @4castle 你也可以用 JavaScript 加载内容,但是这个问题和具体问题还不清楚。 请记住,如果 iframe 引用不同的域或 HTTP 协议,这将不起作用。它会触发一个安全错误,认为它是 XSS。 他们都来自同一个域@4castle 【参考方案1】:

iframe 的JavaScript 中使用window.parent

parent.document.getElementById('contentarea').innerHTML = 
    "Please Wait... Countdown is loading FOO";

【讨论】:

是的,附加父级会起作用,但这不是真正的问题。这里的问题是将 FOO 替换为将在父页面上运行的 javascript 代码。谢谢 @Ekene 预期的 HTML 输出示例是什么?本质上,所有输出语句都是相同的(就像您正在修改当前页面一样),但前面有 parent 预期的输出应该是这样的:code Please Wait... 正在加载倒计时 code 不需要将

以上是关于在父网页的 iframe 中运行 JavaScript的主要内容,如果未能解决你的问题,请参考以下文章

在父窗口的上下文中运行脚本

为啥将 <script> 附加到动态创建的 <iframe> 似乎会在父页面中运行脚本?

在父窗口中访问 iFrame 的 cookie

asp 网页 iframe 子页如何向父页回传参数

在iframe窗体内 获取父级的元素;;在父窗口中获取iframe中的元素

在父级从 iframe 访问变量的值