IE6: window.onresize работает на IIS, взрывается на asp.net Dev Server

Обновление 1:
невозможно воспроизвести это на компьютере коллеги (такая же настройка, как у меня), поэтому я предполагаю, что это проблема с моей рабочей станцией, а не общая.

Буду признателен, если кто-то закроет этот вопрос, так как у меня недостаточно репутации, чтобы сделать это самому.

@MatthewMartin. Спасибо за ваши комментарии :-)


Обновление 2:
В отличие от моего коллеги, на моей машине установлены VS90sp1-KB945140-ENU.exe ( SP1) и VS90SP1-KB957912-x86.exe (исправление JS Intellisense). Это кажется , что единственное различие между нашими установками. Я удалил их обоих, но это не решило мою проблему.


На моей странице asp.net (C #) есть немного Javascript для изменения размера объекта, когда пользователь изменяет размер окна.

Когда я захожу на страницу с помощью IE6 на моем сервере DEV (IIS), это работает .
Когда я получаю доступ к странице, используя IE6 через VS2008, используя F5 или CTRL-F5 (обе из которых запускают сервер разработки ASP.NET), происходит сбой . Кажется, вводится бесконечный цикл изменения размера, когда adjSpreadsheetSizeфункция запускает событие window.resize, которое вызывает adjSpreadsheetSize... Повторение до бесконечности

Я вижу немало людей, которые жалуются на то, что IE6 не может правильно обрабатывать события одного размера, но, похоже, никто не сталкивается с такой проблемой.

Любая идея, почему этот код работает на 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
    • Установленное издание: Professional
    • 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 для Visual Studio 2008
  • Microsoft .NET Framework версии 3.5 с пакетом обновления 1 (SP1)
  • Проект Website находится на сервере DEV (сопоставленном как локальный диск)
2 ОТВЕТА

Поскольку это объект ActiveX, который вы пытаетесь загрузить, возможно, ваш MSIE настроен на доверие http: // localhost больше, чем http: // localhost: 1235 / foo ?

Другие отличия от IIS по сравнению с ASP.NET Development Server:

IIS только передает некоторые файлы в фильтр aspnet, сервер разработки ASP.NET превращает IIS.

Кроме того, иногда изменение порта № изменит поведение.

0
11.12.2008 20:02:31

я добавил
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?

0
11.12.2008 20:45:27