IE6: window.onresize работает на IIS, взрывается на asp.net Dev Server - PullRequest
1 голос
/ 11 декабря 2008

Обновление 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 ... Repeat ad infinitum

Я вижу немало людей, жалующихся на то, что 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
  • Проект Website находится на сервере DEV (сопоставленном как локальный диск)

Ответы [ 2 ]

0 голосов
/ 11 декабря 2008

Я добавил
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 декабря 2008

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

Другие различия между IIS и ASP.NET Development Server:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...