2010-08-17 56 views
0

我无法找到以下问题的解决方案:我想在iframe中显示任何网站并向此iframe添加元素(div)。 由于浏览器中的跨脚本预防,这似乎是不可能的。在iframe中创建div

有没有办法做到这一点?

回答

1

如果您实际上没有在iframe中托管域,则不会。最好你可以做的是有一个服务器端代理页面,它复制HTML并插入div。

0

跨域脚本规则明确地阻止了这一点。即使您现在找到解决方案,我将来也会关注它,这可能是一种破解。如果您没有在您的iFrame中拥有/托管该域名,则该域名被禁止。

一个代理或门面应用程序,操纵HTML并提供服务可能是可能的,但我无法想象这很容易。

这很可能对您没有用处,但我知道的唯一被认可的方法是使用HTA,所以如果您的应用程序在可信环境(如公司内联网或信息亭等)中运行, ,你可以采取HTA的方法:http://msdn.microsoft.com/en-us/library/ms536496%28VS.85%29.aspx

个人HTA给我的毛骨悚然。

0

如果你能做到这一点,你可以轻松地加载任何网页到iframe(可能是用户登录的网站)并从那里提取内容。

把安全话题放在一边,你的代码还有另一个问题:你需要在iframe的文档中创建元素,而不是当前文档,并再次将它附加到iframe的文档,而不是iframe对象本身:

function addDiv() { 
    var doc = myFrame.contentDocument, 
     newdiv = doc.createElement("div"); 
    newdiv.innerHTML = "foo"; 
    doc.appendChild(newdiv); 
} 
1

你的目标是?

如果你想重新格式化网页上的内容或运行脚本,那么你可能需要代理和复制HTML(如MEDER建议)

如果你只是想在自己的页面重叠或“插入”的东西你可以尝试在你自己的页面上放置一个div,并在你想要的iframe顶部设置它的位置。

我必须这样做才能将iframe放在swf文件之前。

+0

是的,这就是我想要做的:我想为网站创建某种叠加层,并在此叠加层中显示元素。 我只是试图在iframe上创建一个div。它的工作原理,但我认为我需要找到一个解决方案,以在iframe内滚动时移动div。 – Bob 2010-08-17 22:33:28