Я использую ноябрьскую версию AjaxControlToolkit и обнаружил логическую ошибку, но пытаюсь найти лучший способ исправить это к субботе, чтобы программа работала в IE.
Эта проблема имеет ошибку только в IE, она работает в Firefox3.5.
У меня есть компонент AsyncFileUpload на вкладке, который кажется невидимым при запуске этой функции, поэтому ширина смещения равна нулю.
Проблема в файле AsyncFileUpload.pre.js
, в функции _app_onload
и в этой строке:
this._innerTB.style.width = (this._inputFile.offsetWidth - 107) + "px";
Я не хочу компилировать его из исходного кода, но это может оказаться моим лучшим вариантом, поэтому я могу исправить ошибку.
Но, возможно, это будет мое исправление:
this._innerTB.style.width = ((this._inputFile.offsetWidth == 0) ? 200 : this._inputFile.offsetWidth) - 107) + "px";
Но я не знаю, есть ли лучшее решение.
Я мог бы просто написать новую функцию-прототип в своем классе javascript и просто исправить логическую ошибку, которая лучше, чем перекомпиляция. Если я исправлю это в коде, то всякий раз, когда я делаю обновление, мне нужно будет продолжать заменять эту строку, пока она не будет исправлена в кодовой базе.
Но я пытаюсь выяснить, есть ли у элемента способ узнать, что он только что стал видимым, так как в любое время вам нужно знать фактическую ширину элемента, тогда вы не сможете установить его до это отображается. Я не могу придумать, как это узнать, поэтому я стараюсь исправить элементы на вкладке при первом выборе вкладки, но для универсальной библиотеки это не является возможным решением.
Расположение основного вопроса
Итак, прежде чем отправлять отчет об ошибке по этому поводу, мне любопытно, есть ли лучший способ сделать это , а не делать это, когда страница загружена, и предполагая минимальную ширину это, вероятно, неправильно. <- Вопрос находится здесь </p>
Я использую следующий код для создания элемента:
<cc1:AsyncFileUpload ID="AsyncFileUpload1" runat="server"
OnClientUploadError="uploadError" OnClientUploadStarted="StartUpload"
OnClientUploadComplete="UploadComplete"
CompleteBackColor="Lime" UploaderStyle="Modern" Width="400px"
ErrorBackColor="Red" ThrobberID="Throbber"
onuploadedcomplete="AsyncFileUpload1_UploadedComplete"
UploadingBackColor="#66CCFF" />
И если это имеет какое-то значение, я использую это, поскольку ToolkitScriptManager, казалось, вводил другие ошибки, но это могло быть моей ошибкой:
<ajax:AjaxScriptManager ID="scriptmanager1" runat="server" EnablePartialRendering="true" ></ajax:AjaxScriptManager>
Я не уверен, будет ли полезен LoadScriptsBeforeUI
, но я считаю, что хочу, чтобы пользовательский интерфейс был выполнен до фактической загрузки скриптов.
Мне интересно, что ширина, которую я установил, фактически не устанавливается, когда дерево dom завершено.