IE6:window.onresize适用于IIS,在asp.net Dev Server上爆炸

时间:2008-12-11 17:03:24

标签: c# asp.net javascript visual-studio internet-explorer

更新1:
无法在同事的计算机上重现这一点(与我的设备相同)因此我认为这是我的工作站的问题,而不是一般问题。

如果有人愿意关闭这个问题,我会很感激,因为我自己没有足够的声誉。

@MatthewMartin。感谢您的评论: - )


更新2:
与我的同事不同,我的计算机上安装了 VS90sp1-KB945140-ENU.exe(SP1) VS90SP1-KB957912-x86.exe (JS Intellisense修补程序)。 出现是我们设置之间的唯一区别。我删除了它们,但这并没有解决我的问题。


在我的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 Pro SP2
  • Microsoft Visual Studio 2008版本9.0.21022.8 RTM
    • 已安装版:专业版
    • Microsoft Visual Basic 2008
    • Microsoft Visual C#2008
    • Microsoft Visual C ++ 2008
    • 用于Office的Microsoft Visual Studio 2008工具
    • Microsoft Visual Web Developer 2008
    • 适用于Visual Studio 2008的Crystal Reports Basic
  • Microsoft .NET Framework版本3.5 SP1
  • 网站项目位于DEV服务器上(映射为本地驱动器)

2 个答案:

答案 0 :(得分:0)

由于这是您尝试加载的activex对象,可能您的MSIE已配置为信任http://localhost超过http://localhost:1235/foo

与IIS与ASP.NET Development Server的其他差异:

IIS只将一些文件转换为aspnet过滤器,ASP.NET dev服务器全部转为IIS。

此外,有时端口#的更改将改变行为。

答案 1 :(得分:0)

我添加了 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?