我无法找到以下问题的解决方案:我想在iframe中显示任何网站,并向此iframe添加元素(div)。 由于浏览器中的跨脚本防止,这似乎是不可能的。
有没有办法做到这一点?
答案 0 :(得分:1)
如果您实际上没有在iframe中托管域,请执行。你能做的最好的是有一个服务器端代理页面,它复制html并插入div。
答案 1 :(得分:1)
你的目标是什么?
如果您想重新格式化内容或在其页面上运行脚本,那么您可能需要代理并复制html(如建议的那样)
如果您只想在页面中叠加或“插入”某些内容,可以尝试在自己的页面上放置div,并将其位置设置在iframe的顶部。
我必须这样做才能在之前将iframe粘贴到swf文件上。
答案 2 :(得分:0)
跨域脚本编写规则明确禁止此操作。即使你现在找到解决方案,我将来也会关注它,这可能是一个黑客攻击。如果您不在iFrame中拥有/托管域名,则禁止使用。
操纵HTML并提供HTML的代理或外观应用程序可能是可能的,但我无法想象它很容易。
这可能对您没用,但我所知道的唯一认可的方法是使用HTA,因此如果您的应用程序在受信任的环境(如公司内部网或自助服务终端等)中运行,您可以采用HTA方法:http://msdn.microsoft.com/en-us/library/ms536496%28VS.85%29.aspx
个人HTA给了我毛骨悚然。
答案 3 :(得分:0)
如果你能做到这一点,你可以轻松地将任何网页加载到iframe(可能是用户登录的网站)并从中提取内容。
将安全主题放在一边,您的代码还有另一个问题:您需要在iframe的文档中创建元素,而不是当前文档,并再次将其附加到iframe的文档,而不是iframe对象本身:
function addDiv() {
var doc = myFrame.contentDocument,
newdiv = doc.createElement("div");
newdiv.innerHTML = "foo";
doc.appendChild(newdiv);
}