2

这对于 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(...) is null or not an object'。有人可以建议我应该更改什么以使其跨浏览器工作吗?

非常感谢,阿里

4

4 回答 4

2

尝试包装

document.getElementById('documentFrame2').onload = resizeIframe;

之内:

window.onload = function(){

    document.getElementById('documentFrame2').onload = resizeIframe;
    window.onresize = resizeIframe;
    resizeIframe();
};

在页面/Dom 加载之前,iframe 不存在于 DOM 中。

更新

没有看到您发布的部分代码。

您可以保留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。

于 2010-06-30T08:39:38.880 回答
1
  1. alert(document.getElementById('abcId').value);
    
  2. alert(document.formName.elements['abcName'].value);
    

我遇到了同样的问题,我尝试了第二个它有效的问题。

于 2011-10-26T18:21:31.167 回答
0

你做

document.getElementById('documentFrame2').onload = resizeIframe;

在文档准备好之前,可以找到 iframe。在 onload- 或 document-ready-function 或 iframe 之后的单独 javascript 块中调用它。

于 2010-06-30T08:39:03.827 回答
0

如果你onload"resizeIframe"在 iframe 标签中使用过,就不再需要document.getElementById('documentFrame2').onload = resizeIframe;

我更喜欢window.onresize = resizeIframe;通过以下方式替换:

window.onload = function() {
  window.onresize = resizeIframe;
};

有时窗口会在 iframe 准备好运行之前调整大小,这会导致错误。

=========================

编辑:

window.onload = function() {
  resizeIframe();
  window.onresize = resizeIframe;
};
于 2010-06-30T08:45:06.423 回答