★ IE6 怪事,不拖窗口也能onresize? 还是死循环! 高分请高手解答! 当我把index.html的宽度拖小,小于sub里面table的宽度800px的时候是指拖窗口吗我复制lz的代码在ie6运行只弹出2次而已啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 pTar.width = pTar.Document.body.scrollWidth + 10 ;把末尾的+10 改成+50 看看。 我做了一个页面:其中的 <iframe>大小随着所在index.html页面大小自动变化;同时 <iframe>内的sub.html的大小随iframe的大小自动变化。 你想要什么功能啊?<table border="3" width="800px" style="text-align: center">这里width=100%就行了啊 如果吧所有 alert() 都注销, 然后把pTar.Document.body.scrollWidth + 50 后面的“+ 50 ” 去掉。可能会看到的结果和IE7一样,我估计是因为sub.html太小了,我本地测试用内容多的页面,就是去掉“+50”,也是死循环。 这个我知道,有的多数页面都可以设置百分比,但是我们项目客户变态,表格宽度约2500px,N多列显示在一个表格里,如果用百分比的话,每列的列高是原来的十几倍。看东西全乱套了。 <!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><title>主页</title> <script type="text/javascript">//拖动窗体触发事件var resizeTimer = null;//window.onresize = function()//{// if(resizeTimer==null)// {// resizeTimer = setTimeout("doResize()",300); //控制调用方法的时间间隔// }//}document.getElementById("aa").onresize = function(){ if(resizeTimer==null) { resizeTimer = setTimeout("doResize()",1000); //控制调用方法的时间间隔 }}function doResize(){ findDimensions('iframe',true); resizeTimer=null;}//实时获取浏览器宽度和高度;var winWidth = 0;function findDimensions(iframeName,resize) //函数:获取尺寸{ //获取窗口宽度 if (window.innerWidth) { winWidth = window.innerWidth; } else if ((document.body) && (document.body.clientWidth)) { winWidth = document.body.clientWidth; } //通过深入Document内部对body进行检测,获取窗口大小 if (document.documentElement && document.documentElement.clientWidth) { winWidth = document.documentElement.clientWidth; } //拖动浏览器的时候,调用的调整iframe方法,参数(iframe ID ,浏览器宽度) alert('onresize方法被调用 ');// dyniframesize(iframeName,winWidth);} //此段代码用于动态设置ifream宽度 var getFFVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1]var FFextraWeight=getFFVersion>=0.1? 16 : 0 function dyniframesize(iframeName,winWidth) { var pTar = null; if (document.getElementById) { pTar = document.getElementById(iframeName); } else { eval('pTar = ' + iframeName + ';'); } if (pTar && !window.opera) { pTar.style.display="block"; if (pTar.Document && pTar.Document.body.offsetWidth) { //这段代码动态设置iframe宽度 if(winWidth < pTar.Document.body.scrollWidth) { pTar.width = pTar.Document.body.scrollWidth + 50 ; } else { pTar.width='100%'; } // alert(pTar.Document.body.scrollWidth); //★如果注销此行,在ie6中将无限调用onresize方法。 } }}</script></head><div id="aa" style="width:100%; height:1px;"></div> <body> <!-- 如果去掉DIV标记,onresize方法也会执行,宽度重复+ 50px,但是只提示信息只显示1次或者2次。 注:内容需要DIV不能去掉 --> <div> <iframe id="iframe" frameborder="1" scrolling="no" width="100%" height="100%" src="sub.html" onload="findDimensions('iframe')" ></iframe> </div> </body></html> 因为window.onresize本来是window的resize但ie6(ie7不知有没有问题)在body的resize时也执行一遍(即body宽度修改时也执行一遍)所以虽然你没有修改(拖动)窗口的大小但修改了body的大小所以执行了一遍onresize而你在onresize里面又修改body的大小所以进入死循环了 先谢谢 cloudgamer ;不过,虽然没有死循环了,可是当IE浏览器小于800px刷新后,托大index,iframe还是靠左,没有随index变大。 当IE浏览器大于800px刷新后,托小index,iframe的内容被覆盖;还是不行 刚才只想着原因没注意var t=document.documentElement.clientWidth;window.onresize = function(){ if(t!=document.documentElement.clientWidth){ t=document.documentElement.clientWidth; if(resizeTimer==null) { resizeTimer = setTimeout("doResize()",1000); //控制调用方法的时间间隔 } }}改这样试试 cloudgamer 还在吗?请到http://topic.csdn.net/u/20081226/14/caf2776a-46cd-4c2f-a144-4fc4b6f0fac5.html 接分。 求一个支持中文排序的Tablesorter插件, 大家帮忙看一下这段代码,很简单 关于JSP,跟数据库乱码问题 怎样隐藏当前窗口的菜单栏、工具栏等等,不是用OPEN打开新窗口啊!!! Unicode的javascript用法 小問題 一个简单js,左面一个图片,右面一个图片,鼠标移动到左面的图片后,右面的图片变为另一个图片。请给代码?谢了。 javascript下拉菜单与iframe的层问题 如何阻止提交?这样行么? 问一个正则表达式关于分支的问题 js 右键 表格显示时横向和纵向交叉加亮[分享]
把末尾的+10 改成+50 看看。
同时 <iframe>内的sub.html的大小随iframe的大小自动变化。 你想要什么功能啊?<table border="3" width="800px" style="text-align: center">
这里width=100%就行了啊
如果吧所有 alert() 都注销,
然后把pTar.Document.body.scrollWidth + 50 后面的“+ 50 ” 去掉。
可能会看到的结果和IE7一样,我估计是因为sub.html太小了,我本地测试用内容多的页面,就是去掉“+50”,也是死循环。
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>主页</title>
<script type="text/javascript">
//拖动窗体触发事件
var resizeTimer = null;
//window.onresize = function()
//{
// if(resizeTimer==null)
// {
// resizeTimer = setTimeout("doResize()",300); //控制调用方法的时间间隔
// }
//}document.getElementById("aa").onresize = function()
{
if(resizeTimer==null)
{
resizeTimer = setTimeout("doResize()",1000); //控制调用方法的时间间隔
}
}
function doResize()
{
findDimensions('iframe',true);
resizeTimer=null;
}
//实时获取浏览器宽度和高度;
var winWidth = 0;
function findDimensions(iframeName,resize) //函数:获取尺寸
{
//获取窗口宽度
if (window.innerWidth) { winWidth = window.innerWidth; }
else if ((document.body) && (document.body.clientWidth)) { winWidth = document.body.clientWidth; }
//通过深入Document内部对body进行检测,获取窗口大小
if (document.documentElement && document.documentElement.clientWidth)
{ winWidth = document.documentElement.clientWidth; }
//拖动浏览器的时候,调用的调整iframe方法,参数(iframe ID ,浏览器宽度)
alert('onresize方法被调用 ');//
dyniframesize(iframeName,winWidth);
} //此段代码用于动态设置ifream宽度
var getFFVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1]
var FFextraWeight=getFFVersion>=0.1? 16 : 0
function dyniframesize(iframeName,winWidth)
{
var pTar = null;
if (document.getElementById) { pTar = document.getElementById(iframeName); }
else { eval('pTar = ' + iframeName + ';'); }
if (pTar && !window.opera)
{
pTar.style.display="block";
if (pTar.Document && pTar.Document.body.offsetWidth)
{
//这段代码动态设置iframe宽度
if(winWidth < pTar.Document.body.scrollWidth)
{
pTar.width = pTar.Document.body.scrollWidth + 50 ;
}
else
{
pTar.width='100%';
}
// alert(pTar.Document.body.scrollWidth); //★如果注销此行,在ie6中将无限调用onresize方法。
}
}
}
</script>
</head>
<div id="aa" style="width:100%; height:1px;"></div>
<body>
<!-- 如果去掉DIV标记,onresize方法也会执行,宽度重复+ 50px,但是只提示信息只显示1次或者2次。
注:内容需要DIV不能去掉 -->
<div>
<iframe id="iframe" frameborder="1" scrolling="no" width="100%" height="100%" src="sub.html"
onload="findDimensions('iframe')" ></iframe>
</div>
</body>
</html>
但ie6(ie7不知有没有问题)在body的resize时也执行一遍(即body宽度修改时也执行一遍)
所以虽然你没有修改(拖动)窗口的大小但修改了body的大小所以执行了一遍onresize
而你在onresize里面又修改body的大小所以进入死循环了
不过,
虽然没有死循环了,可是当IE浏览器小于800px刷新后,托大index,iframe还是靠左,没有随index变大。
当IE浏览器大于800px刷新后,托小index,iframe的内容被覆盖;还是不行
var t=document.documentElement.clientWidth;
window.onresize = function()
{
if(t!=document.documentElement.clientWidth){
t=document.documentElement.clientWidth;
if(resizeTimer==null)
{
resizeTimer = setTimeout("doResize()",1000); //控制调用方法的时间间隔
}
}
}
改这样试试
请到http://topic.csdn.net/u/20081226/14/caf2776a-46cd-4c2f-a144-4fc4b6f0fac5.html
接分。