当组件在其他选项卡中时,AsyncFileUpload在AjaxControlToolkit中出现逻辑错误,因此不显示
作者:互联网
我使用的是11月版的AjaxControlToolkit,但发现了逻辑错误,但是我试图找出在周六之前解决此问题的最佳方法,以便该程序可以在IE上运行.
此问题仅在IE上有错误,它在Firefox3.5上有效.
我在选项卡上有一个AsyncFileUpload组件,该组件在运行时似乎不可见,因此偏移宽度为零.
问题出在文件_app_onload中的文件AsyncFileUpload.pre.js中,并且以下行:
this._innerTB.style.width =(this._inputFile.offsetWidth-107)“ px”;
我不想从源代码进行编译,但这可能最终是我最好的选择,因此我可以修复该错误.
但是,这可能将是我的解决办法:
this._innerTB.style.width =(((this._inputFile.offsetWidth == 0)?200:this._inputFile.offsetWidth)-107)“ px”;
但是,我不知道是否有更好的解决方案.
我可以在javascript类中编写一个新的原型函数,然后修复逻辑错误,这比重新编译要好.如果我在代码中修复了它,那么每当我进行更新时,都需要继续替换该行,直到它在代码库中得到修复.
但是,我试图找出某个元素是否有办法知道它刚刚变得可见,因为任何时候只要您需要知道元素的实际宽度,就无法真正设置它直到显示出来.我想不出一种方法来知道这一点,所以我倾向于在第一次选择选项卡时修复选项卡上的元素,但是对于通用库而言,这是不可能的解决方案.
主要问题的位置
因此,在我发送有关此问题的错误报告之前,我很好奇是否有更好的方法来完成此工作,而不是在页面加载完毕后再完成,并假定最小宽度可能是错误的. <-问题位于此处 我正在使用以下代码来创建元素:
<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是否有用,但我相信我希望在实际加载脚本之前完成UI.
我发现有趣的是,当dom树完成时,我设置的宽度实际上并未设置.
解决方法:
尝试将此属性添加到您的scriptmanager
LoadScriptsBeforeUI =“ true”
我已经下载了源代码并修复了代码行,但仍然无法正常工作,
然后我将此属性添加到脚本管理器中,它可以正常工作!
如果您想更改源代码,请检查此页面以了解详细信息
http://ajaxcontroltoolkit.codeplex.com/SourceControl/network/Forks/keyoke/AyncFileUploadFix/changeset/changes/30da4b8d1c6d
标签:ajaxcontroltoolkit,javascript 来源: https://codeday.me/bug/20191106/2001674.html