对于那里的JavaScript专家来说,这一定非常简单。在下面的代码中,我试图将iframe打开到浏览器窗口的完整高度。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
<script language="javascript" type="text/javascript">
function resizeIframe() {
var height = document.documentElement.clientHeight;
height -= document.getElementById('documentFrame2').offsetTop;
height -= 20;
document.getElementById('documentFrame2').style.height = height +"px";
};
document.getElementById('documentFrame2').onload = resizeIframe;
window.onresize = resizeIframe;
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<iframe src="standard-tube-map.pdf" id="documentFrame2" width="100%" onload="resizeIframe();" ></iframe>
</div>
</form>
</body>
</html>
它在Mozilla中工作但在IE中(仅在IE8中测试)它会给出错误:'document.getElementById(...)为null或不是对象'。任何人都可以建议我应该更改什么以使其跨浏览器工作?
非常感谢, 阿里
答案 0 :(得分:2)
尝试包装
document.getElementById('documentFrame2').onload = resizeIframe;
在:
window.onload = function(){
document.getElementById('documentFrame2').onload = resizeIframe;
window.onresize = resizeIframe;
resizeIframe();
};
在页面/ Dom加载之前,DOM中不存在iframe。
<强>更新强>:
没有看到您发布的部分代码。
您可以将onload = "resizeIframe"
保留在元素本身中,并将JavaScript放在头部中:
function resizeIframe() {
var height = document.documentElement.clientHeight;
height -= document.getElementById('documentFrame2').offsetTop;
height -= 20;
document.getElementById('documentFrame2').style.height = height +"px";
}
window.onresize = resizeIframe;
这样你就不需要在元素之后运行任何JavaScript。
答案 1 :(得分:1)
alert(document.getElementById('abcId').value);
alert(document.formName.elements['abcName'].value);
我遇到了同样的问题,我尝试了第二个工作。
答案 2 :(得分:0)
document.getElementById('documentFrame2').onload = resizeIframe;
在文档准备好之前,可以找到iframe。在onload-或document-ready-function中或在iframe之后的单独的javascript-block中调用它。
答案 3 :(得分:0)
如果您在iframe代码中使用了onload"resizeIframe"
,则不再需要document.getElementById('documentFrame2').onload = resizeIframe;
我更喜欢通过以下方式转发window.onresize = resizeIframe;
:
window.onload = function() {
window.onresize = resizeIframe;
};
有时窗口会在iframe准备好运行之前调整大小,这会导致错误。
========================
编辑:
window.onload = function() {
resizeIframe();
window.onresize = resizeIframe;
};