IE6:在IIS window.onresize工作,炸毁asp.net开发服务器上
更新1:
无法在同事的电脑上重现此(相同的设置我的),所以我认为这是一个问题我的工作站,而不是一般的。IE6:在IIS window.onresize工作,炸毁asp.net开发服务器上
我会很感激,如果有人会关闭这个问题,因为我自己没有足够的声誉。
@MatthewMartin。感谢您的意见:-)
更新2:
不像我的同事,我有VS90sp1-KB945140-CHS.exe程序(SP1)和VS90SP1-KB957912-x86.exe程序(JS智能感知修复程序)安装在我的机器上。那出现是我们设置之间的唯一区别。我删除了他们两个,但这并没有解决我的问题。
在我的asp.net(C#)页面的JavaScript的一点点,当用户调整窗口大小调整的对象。
当我在我的DEV服务器(IIS)上使用IE6访问页面时,它的作品工作。
当我使用IE6通过VS2008使用F5或CTRL-F5(两者都启动ASP.NET开发服务器)访问该页面时,其失败。它似乎进入无限循环的调整大小,其中adjSpreadsheetSize
函数触发window.resize事件,其中调用adjSpreadsheetSize
...重复无限循环
我看到有不少人抱怨说IE6无法正确处理onresize事件,但没有人似乎有这个确切的问题。
任何想法为什么此代码在IIS上工作,但不在ASP.NET Development Server上?
下面的代码的相关部分:
[snip]
<head>
[snip]
<script language="javascript" type="text/javascript">
window.onresize = adjSpreadsheetSize;
window.onload = pageSetup;
//Change spreadsheet size to fill the window (viewport) below the entry form
function adjSpreadsheetSize() {
var objSS = document.getElementById("OWC_data");
var winWidth = document.documentElement.clientWidth;
var winHeight = document.documentElement.clientHeight;
winHeight -= document.getElementById('form_body').offsetHeight;
objSS.height = winHeight;
objSS.width = winWidth;
return false;
}
function pageSetup() {
adjSpreadsheetSize();
}
</script>
[snip]
</head>
<body>
<form id="form1" runat="server" action="rawdata.aspx" method="get">
<div id="form_body">
[snip]
</div>
</form>
<div id="OWC_container">
<object id="OWC_data" classid="clsid:0002E559-0000-0000-C000-000000000046">
</object>
</div>
我的设置:
- 的WinXP专业版SP2
- 微软的Visual Studio 2008版本9.0.21022.8 RTM
- 安装版:专业
- 的Microsoft Visual Basic 2008
- 的Microsoft Visual C#2008
- 的Microsoft Visual C++ 2008
- 微软的Visual Studio 2008和工具的Office
- 微软的Visual Web Developer 2008
- 水晶Visual Studio 2008的基本报告
- Microsoft .NET Framework Ver sion 3。5 SP1
- 网站项目所居住的DEV服务器(映射为本地驱动器)
因为这是你试图加载ActiveX对象上,也许你的MSIE被配置为信任比http://localhost:1235/foohttp://localhost以上?
与IIS其他差别VS ASP.NET开发服务器:
IIS只移交给ASPNET过滤器打开某些文件,ASP.NET开发服务器关闭所有到IIS。
此外,有时端口号的变化会改变行为。
我加入alert("Viewport: " + document.documentElement.clientHeight + " - formHeight: " + formHeight + " = " + winHeight);
出于某种原因,在div “form_body” 翻转来回 “421” 和 “435”(14差)之间。因此,我添加了一个边框来尝试查看发生更改的位置... <div style="border: solid 1px red;" id="form_body">
而当边框在那里时,调整大小的工作。轻松重现...添加边框样式,重新调整大小3〜5次。删除边框,只要我喜欢坐下来观看,就会反复发射。
WTF?