【问题标题】:IE6: window.onresize works on IIS, blows up on asp.net Dev ServerIE6:window.onresize 在 IIS 上工作,在 asp.net 开发服务器上爆炸
【发布时间】:2008-12-11 17:03:23
【问题描述】:

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

如果有人能解决这个问题,我将不胜感激,因为我自己没有足够的声誉来解决这个问题。

@马修马丁。感谢您的 cmets :-)


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


在我的 asp.net (C#) 页面中有一点点 Javascript,用于在用户调整窗口大小时调整对象的大小。

当我在我的 DEV 服务器 (IIS) 上使用 IE6 访问该页面时,它工作
当我使用 F5 或 CTRL-F5(两者都启动 ASP.NET 开发服务器)通过 VS2008 使用 IE6 访问页面时,它失败。它似乎进入了一个调整大小的无限循环,adjSpreadsheetSize 函数触发了 window.resize 事件,该事件调用了adjSpreadsheetSize ... 无限重复

我看到很多人抱怨 IE6 无法正确处理 onresize 事件,但似乎没有人遇到这个确切的问题。

知道为什么这段代码可以在 IIS 上运行,但不能在 ASP.NET 开发服务器上运行吗?

这是代码的相关部分:

[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
    • Microsoft Visual Studio 2008 Office 工具
    • Microsoft Visual Web Developer 2008
    • Crystal Reports Basic for Visual Studio 2008
  • Microsoft .NET Framework 3.5 SP1 版
  • 网站项目位于 DEV 服务器上(映射为本地驱动器)

【问题讨论】:

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


    【解决方案1】:

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

    IIS 与 ASP.NET 开发服务器的其他区别:

    IIS 只将部分文件交给 aspnet 过滤器,ASP.NET 开发服务器全部交给 IIS。

    另外,有时端口号的变化会改变行为。

    【讨论】:

      【解决方案2】:

      我添加了
      alert("Viewport: " + document.documentElement.clientHeight + " - formHeight: " + formHeight + " = " + winHeight);

      由于某种原因,div“form_body”在“421”和“435”之间来回翻转(相差 14)。所以我添加了一个边框来尝试看看变化发生在哪里...... &lt;div style="border: solid 1px red;" id="form_body"&gt;

      当有边框时,调整大小就起作用了。易于重现...添加边框样式,调整大小触发 3~5 次。移除边框,只要我愿意坐下来观看,它就会反复触发。

      WTF?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-18
        • 2011-03-02
        • 1970-01-01
        • 2011-05-30
        • 2011-06-14
        • 2011-07-21
        • 1970-01-01
        • 2012-10-27
        相关资源
        最近更新 更多