【发布时间】:2015-03-24 05:56:26
【问题描述】:
我正在使用 javascript 在 div 中创建一个 iframe,以产生在网站上打开窗口的错觉。到目前为止,我有一个在 chrome 中运行良好的脚本,但在 IE 或 Firefox 中无法正常运行。脚本如下:
HTML:
<a href="#" onclick="openWindow('login.php')">Log in</a>
Javascript:
function openWindow(href) {
var win = document.createElement("DIV");
win.id = "window";
var iframe = document.createElement("IFRAME");
iframe.src = href;
iframe.seamless = "seamless";
iframe.scrolling = "no";
win.appendChild(iframe);
iframe.onload = function() { resizeWindow(this) };
document.body.appendChild(win);
}
function resizeWindow(element) {
var newHeight = element.contentWindow.document.body.scrollHeight;
element.style.height = newHeight + "px";
element.parentNode.style.height = newHeight + "px";
element.parentNode.style.display = "block";
}
当我声明变量 newHeight 时,问题就出现了。我发现虽然 Chrome 可以成功找到 element.contentWindow.document.body.scrollHeight,但 Firefox 和 IE 却没有(它们返回 0)。这会导致问题浏览器中的窗口 div 被压扁(高度:0)。
我的问题是 a) 我怎样才能以这样的方式编写它以使其在有问题的浏览器中工作,或者 b) 是否有一种更简单的方法来处理外部页面,例如我的登录表单,在一个窗口中用户的当前页面?
谢谢。
【问题讨论】:
-
在发布您的查询之前检查 stackoverflow 之前发布的关于同一主题的问题。已经回答
-
实用程序,我已经搜索了一个小时,但没有找到为什么 element.contentWindow.document.body.scrollHeight 返回为 0 的解释。请您在此处粘贴一个 url给我?
标签: javascript html iframe window