我在 iframe 上有一个 iframe,我想用这段代码更改图像的 src
window.top.frames[0].frames[0].document.getElementById("maquina").src = "https://developer.cdn.mozilla.net/media/img/mdn-logo-sm.png";
当我尝试它时它可以工作,但我看不到页面中的变化,只有当 e 读取该元素的 .src 时才出现在代码中
我在 iframe 上有一个 iframe,我想用这段代码更改图像的 src
window.top.frames[0].frames[0].document.getElementById("maquina").src = "https://developer.cdn.mozilla.net/media/img/mdn-logo-sm.png";
当我尝试它时它可以工作,但我看不到页面中的变化,只有当 e 读取该元素的 .src 时才出现在代码中
如果没有用于访问子 DOM 的全局方法,则无法从父框架中操作 iframe 的内容。这里有一个适合您需要的答案,但我将复制以下内容以供参考:
在子 iframe 中:
parent.childGetElementById = function (id) {return document.getElementById(id);}
parent.childLoaded();
在父级中:
function childLoaded() {var dom = childGetElementById('someid');}
假设您实际上可以访问子页面,我建议您修改您的设计,避免使用 iframe。
[回复评论]
好吧,这取决于您是使用直接的 HTML 还是脚本语言(如 PHP)。如果是纯 HTML,则可以使用服务器端包含
<!-- #include virtual="path/to/included/file.html" -->
在 PHP 中,您可以像这样包含页面
require('/real/path/to/included/file.php');
不要误会我的意思,iFrame 在某些特定情况下可能很有用(规避跨域源策略、oAuth 实现等);它们经常被滥用而不是正确使用。