【问题标题】:Why JScript runtime error: Object expected为什么 JScript 运行时错误:预期对象
【发布时间】:2010-11-27 16:40:07
【问题描述】:

我正在尝试使用 jquery 或 jscript 单击隐藏按钮,但我总是得到 “Microsoft JScript 运行时错误:预期对象”错误。

我已经尝试了以下所有方法(所有结果都相同):

$('#btnCompleteHidden').click();or:
$('#btnCompleteHidden').trigger('click');With plain JavaScript:
document.getElementById('btnCompleteHidden').onclick();
$('#<%=btnCompleteHidden.ClientID %>').click();Or:
document.getElementById('<%=btnCompleteHidden.ClientID %>').click();

我已尝试使按钮可见,但结果仍然相同。

我将在这里发布aspx页面:

    <script type="text/javascript">
        function FileDownloader_DownloadStep(Step){
        //The file list is going to be downloaded - "2 = About to Start" 
        if (Step == 2){
            //Dynamically build the filelist for the downloader
            getFileDownloader("FileDownloader").setFileList("GetFileList.aspx");
        }
        //The user has confirmed the download - "6 = File Download About to Start"
        if (Step == 6){
            //Perform the initialization updates to the first file only
            var xmlhttp; 
            if (typeof XMLHttpRequest != 'undefined') { 
                xmlhttp = new XMLHttpRequest(); 
            } 
            if (!xmlhttp) { 
                throw "Browser doesn't support XMLHttpRequest."; 
            } 
            var data = ""; 
            xmlhttp.open("POST", "UpdateVideoInitiated.aspx", true); 
            //Send the proper header information along with the request 
            xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
             //xmlhttp.setRequestHeader("Content-length", data.length); 
            xmlhttp.setRequestHeader("Connection", "close"); 
            xmlhttp.send(data); 
        }
    }
        function onDownloadItemComplete(Result, ErrorPage, Url, FileName, ContentType, FileSize){
            var xmlhttp;
            var data;

            //The handler will display the error description or updates as noted
            switch (Result){
                        //Update the completed file as complete and then perform initialization updates to the next file only
                case 1: if (typeof XMLHttpRequest != 'undefined') { 
                            xmlhttp = new XMLHttpRequest(); 
                        } 
                        if (!xmlhttp) { 
                            throw "Browser doesn't support XMLHttpRequest."; 
                        } 
                        data = FileName; 
                        xmlhttp.open("POST", "UpdateVideoDownloaded.aspx?FileName=" + FileName + "&FileSize=" + FileSize, true); 
                        //Send the proper header information along with the request 
                        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
                         //xmlhttp.setRequestHeader("Content-length", data.length); 
                        xmlhttp.setRequestHeader("Connection", "close"); 
                        xmlhttp.send(data); 
                        break;
                case 2: alert("An error has occurred while downloading the file " + FileName);
                        break;
                        //Update any skipped files to back off the initialization updates to the passed file only
                case 3: if (typeof XMLHttpRequest != 'undefined') { 
                            xmlhttp = new XMLHttpRequest(); 
                        } 
                        if (!xmlhttp) { 
                            throw "Browser doesn't support XMLHttpRequest."; 
                        } 
                        data = FileName; 
                        xmlhttp.open("POST", "UpdateVideoSkipped.aspx?FileName=" + FileName, true); 
                        //Send the proper header information along with the request 
                        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
                         //xmlhttp.setRequestHeader("Content-length", data.length); 
                        xmlhttp.setRequestHeader("Connection", "close"); 
                        xmlhttp.send(data); 
                        break;        
                case 4: alert("The server returned a wrong MIME type (should be " + ContentType + ") for the file " + FileName);
                        break;
                case 5: alert("The server returned a wrong size (should be " + FileSize + ") for the file " + FileName);
                        break;
                case 6: alert("An error has occurred while writing the file " + FileName + " to disk");
                        break;
                case 7: alert("The file " + FileName + " could not be found on the " + "server");
                        break;
                case 8: alert("Access to the file " + FileName + " denied");
                        break;
                case 9: alert("Time out while downloading the file " + FileName);
                        break;
            }
        }
        function onDownloadComplete(Result){
            //The handler will display the error description
            switch (Result){
                        //Update the member download statistics and rebind the grid 
                case 0: $('#btnCompleteHidden').click();
                        break;
                case 1: alert("An error has occurred while creating the file list");
                        break;        
                case 2: alert("An error has occurred while downloading the file list");
                        break;
                case 3: alert("The file list is empty");
                        break;
                case 7: alert("The file list could not be found on the server");
                        break;
                case 8: alert("Access to the file list denied");
                        break;
                case 9: alert("Time out while downloading the file list");
                        break;
            }
        }
</script>

<div class="borderDiv">
     <table cellspacing="0" class="borderTable0" width="100%">
         <tr>
            <td class="Subhdr" >
                <asp:label id="lblScreenHeader" Cssclass="ScreenHdr" runat="server" Height="24px">Member Video Download Detail</asp:label>
            </td>
        </tr>
    </table>
    <div class="NinetyNine5PercentWide SolidThreePixelBorder" style="background-color:White">
        <div class="OneHundredPercentWide EightPixelTopMargin TenPixelBottomMargin">
            <div class="FileListHdr">
                &nbsp;&nbsp;&nbsp;&nbsp;
                <span>Current Escrow Balance (Available for Future Use):</span>
                &nbsp;&nbsp;
                <asp:label ID="lblAvailableBalance" Cssclass="FileListHdr" runat="server" >$280.00</asp:label>
                &nbsp;&nbsp;&nbsp;&nbsp;
                <asp:label ID="lblAvailableBalanceMessage" Cssclass="FileListHdr" runat="server" ></asp:label>
            </div>
        </div>
        <div class="NinetyNinePercentWide">
            <div class="FileListHdr EightPixelBottomMargin">
                &nbsp;&nbsp;&nbsp;&nbsp;
                <span class="FileListHdr" >Number of Files Selected for Download:</span>
                &nbsp;
                <asp:label ID="lblTotalFiles" Cssclass="FileListHdr" runat="server" ></asp:label>
                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <span class="FileListHdr" >Total MBytes:</span>
                &nbsp;
                <asp:label ID="lblTotalMBytes" Cssclass="FileListHdr" runat="server" ></asp:label>
                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <span class="FileListHdr" >Estmated Download Time:</span>
                &nbsp;
                <asp:label ID="lblEstimatedTime" Cssclass="FileListHdr" runat="server" ></asp:label>
                <asp:Button id="btnCompleteHidden" runat="server" Text="CH" Style="visibility: hidden"
                    Enabled="true" OnClick="btnCompleteHidden_OnClick"></asp:Button>
            </div> 
        </div>
        <div class="NinetyNinePercentWide">
            <div class="OneHundredPercentWide">
                <div class="DivDownload" >
                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                    <script type="text/javascript">
                        //Create JavaScript object that will embed File Downloader to the page
                        var fd = new FileDownloaderWriter("FileDownloader", 170, 28);

                        //For ActiveX control full path to CAB file (including file name) should be specified
                        fd.activeXControlCodeBase = "aurigma/FileDownloader2.cab";
                        fd.activeXControlVersion = "2,0,16,0";

                        //Set the Download button text
                        fd.addParam("ButtonDownloadText", "DOWNLOAD NOW");

                        //Set the Download button background color
                        //fd.addParam("BackgroundColor", "#E0EBFF");
                        fd.addParam("BackgroundColor", "White");

                        //Set the Download button regular image
                        fd.addParam("ButtonDownloadImageFormat", "width=170;height=28;BackgroundColor=White;" + 
                            "urlNormal=App_Themes/Default/images/BtnDownload.jpg;" +
                            "urlHover=App_Themes/Default/images/BtnHover.jpg;" +
                            "urlPressed=App_Themes/Default/images/BtnPressed.jpg;" +
                            "urlDisabled=App_Themes/Default/images/BtnPressed.jpg");

                        //Set license key 
                        fd.addParam("LicenseKey", "73020-10000-D8066-8CFDB-84249");

                        //Set reconnect attampts count
                        fd.addParam("ReconnectAttemptsCount", "360");

                        //Set reconnect timeout value (30000 = 10 seconds)
                        fd.addParam("ReconnectTimeOut", "10000");

                        //The following listener will perform some actions when the file list is about to be downloaded
                        fd.addEventListener("DownloadStep", "FileDownloader_DownloadStep");

                        //The following listener will perform some actions when download of a single file is finished
                        fd.addEventListener("DownloadItemComplete", "onDownloadItemComplete");

                        //The following listener will perform some actions when download process is complete
                        fd.addEventListener("DownloadComplete", "onDownloadComplete");

                        //The following listener will perform some actions when a general error is detected
                        //fd.addEventListener("Error", "onError");

                        //Add page load listener
                        //fd.fullPageLoadListenerName = "fullPageLoad";

                        //Set instructions property
                        fd.instructionsEnabled = true;

                        //Tell File Downloader writer object to generate all necessary HTML code to embed File Downloader into the page
                        fd.writeHtml();
                    </script>
                 </div> 
                 <div class="FileListHdr">
                    <asp:RadioButtonList id="rblMemberMachine" runat="server" Font-Bold="True" BackColor="White" ToolTip="Please select machine for downloading" 
                            CssClass="Radio FileListHdr" RepeatDirection="Horizontal" textAlign="right" BorderStyle="None"
                            AutoPostBack="True" OnSelectedIndexChanged="rblMemberMachine_SelectedIndexChanged" >
                            <asp:ListItem Text="Machine 1" Value="1" Selected="True"></asp:ListItem>
                            <asp:ListItem Text="Machine 2" Value="2"></asp:ListItem>
                            <asp:ListItem Text="Machine 3" Value="3"></asp:ListItem>
                    </asp:RadioButtonList>
                 </div>
             </div>
          </div>
       </div>
    <div class="OneHundredPercentWide" >
        <asp:Panel ID="Panel1" runat="server" Width="100%" >
            <asp:GridView id="grvSessionOrderDownloads" runat="server" BorderWidth="2px" BorderStyle="Solid" BorderColor="#C0C0FF"
                Font-Names="Arial" Font-Bold="True" Font-Size="8pt" GridLines="Horizontal" AutoGenerateColumns="False" 
                HorizontalAlign="Left" ForeColor="Blue" CellPadding="2" AllowSorting="True" Width="100%"
                OnRowDataBound="grvSessionOrderDownloads_OnRowDataBound" >

                <HeaderStyle Font-Names="Arial" HorizontalAlign="Center" ForeColor="White" BackColor="#152EE5" 
                    CssClass="sessionOrderDownloadHeaders" Font-Size="Medium" />
                <RowStyle BackColor="White" ForeColor="#333333" />
                <AlternatingRowStyle BackColor="#A5B0FF" />

                <Columns>
                    <asp:BoundField Visible="False" DataField="SORD_ID" HeaderStyle-Width="0px" >
                        <HeaderStyle Width="0px" />
                    </asp:BoundField>
                    <asp:TemplateField HeaderStyle-Width="0px" >
                        <ItemTemplate>
                            <asp:CheckBox Visible="False" Enabled="false" ID="HiddenCheckBox" runat="server"
                                 Checked='<%# Eval("SORD_SelectedForDownloadFlag") %>' />
                        </ItemTemplate>
                        <HeaderStyle Width="0px" />
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Select Files" HeaderStyle-ForeColor="White" > 
                        <ItemTemplate >
                            &nbsp;&nbsp;&nbsp;
                            <asp:ImageButton id="btnSelectVideo" runat="server" CommandArgument='<%# Eval("SORD_ID") %>' 
                                 CommandName="CheckUncheckVideo" ImageUrl='<%# GetCheckboxImage(Container.DataItem) %>' 
                                 Enabled='<%# Eval("SORD_EnableSelectionCheckBox") %>'
                                 Visible='<%# Eval("SORD_EnableSelectionCheckBox") %>'/>
                        </ItemTemplate>
                        <HeaderStyle Width="4%" />
                        <ItemStyle VerticalAlign="Bottom" />
                    </asp:TemplateField>
                    <asp:BoundField DataField="SORD_OSTA_ID" ReadOnly="True" HeaderStyle-ForeColor="White"
                        HeaderText="Status">
                        <HeaderStyle Width="6%" />
                        <ItemStyle CssClass="sessionOrderDownloadItems" />
                    </asp:BoundField>
                    <asp:BoundField DataField="SORD_Topic" ReadOnly="True" HeaderStyle-ForeColor="White"
                        HeaderText="General <br /> Topic" HtmlEncode="false" >
                        <HeaderStyle Width="15%" />
                        <ItemStyle CssClass="sessionOrderDownloadItems" />
                    </asp:BoundField>
                    <asp:BoundField DataField="SORD_Session" ReadOnly="True" HeaderStyle-ForeColor="White"
                        HeaderText="Session <br /> YYMMDD" HtmlEncode="false" DataFormatString="{0:00-00-00}" >
                        <HeaderStyle Width="6%" />
                        <ItemStyle CssClass="sessionOrderDownloadItems" />
                    </asp:BoundField>
                    <asp:BoundField DataField="SORD_FileExtension" ReadOnly="True" HeaderStyle-ForeColor="White"
                        HeaderText="File <br /> Type" HtmlEncode="false" >
                        <HeaderStyle Width="5%" />
                        <ItemStyle CssClass="sessionOrderDownloadItems" />
                    </asp:BoundField>
                    <asp:BoundField DataField="SORD_SessionTitle" ReadOnly="True" HeaderStyle-ForeColor="White"
                        HeaderText="Presentation's Video-Title <br /> &nbsp;&nbsp; (or) Support-File Name" HtmlEncode="false" >
                        <HeaderStyle Width="29%" />
                        <ItemStyle CssClass="sessionOrderDownloadItems" />
                    </asp:BoundField>   
                    <asp:BoundField DataField="SORD_VideoUnlockKey" ReadOnly="True" HeaderStyle-ForeColor="White" 
                        HeaderText="File Unlock <br /> Password" HtmlEncode="false" >
                        <HeaderStyle Width="15%" />
                        <ItemStyle CssClass="sessionOrderDownloadItems" />
                    </asp:BoundField>  
                    <asp:BoundField DataField="SORD_LastDownloadDate"  
                        ReadOnly="True" HeaderStyle-ForeColor="White" HeaderText="Last <br /> Download" htmlEncode="False"
                        DataFormatString="{0:d}" >
                        <HeaderStyle Width="10%" />
                        <ItemStyle CssClass="sessionOrderDownloadItems" />
                    </asp:BoundField>   
                    <asp:BoundField DataField="SORD_RemainingDownloads"  
                        ReadOnly="True" HeaderStyle-ForeColor="White" HeaderText="Remaining <br /> Downloads" htmlEncode="False" DataFormatString="{0:##0}" >
                        <HeaderStyle Width="10%" />
                        <ItemStyle CssClass="sessionOrderDownloadItems" />
                    </asp:BoundField>
                </Columns>

            </asp:GridView>
        </asp:Panel>
    </div>
</div> 
<br />
&nbsp;&nbsp;&nbsp;
<asp:Label ID="Errormsg" runat="server" ForeColor="#CC0000"></asp:Label>

【问题讨论】:

  • 查看 btnCompleteHidden 触发器的 jscript 的“case 0”

标签: javascript jquery asp.net vb.net


【解决方案1】:

一些想法:

  1. 您是否将 jQuery 脚本文件包含在此页面中?这可能解释了有关“$”变量的错误消息的问题。

  2. 使用 click() 而不是 onclick() 来触发点击事件。 onclick 是一个在点击元素时触发的处理程序,但不用于启动事件本身。

  3. 由于 ASP.NET 命名空间及其确保客户端上的唯一元素 ID 的目标,该元素的 ID 可能不是您在页面中定义的内容。解决这一切的一种简单方法是在呈现的页面上查看源代码并找到您的按钮及其“真实”ID。

  4. 正如本文的 cmets 所述,页面必须通过 &lt;script&gt; 标记引用 jQuery 脚本才能使 jQuery 函数正常工作。

编辑:添加第 4 点。

【讨论】:

  • jQuery 脚本文件在项目脚本文件夹中,但是 asp 方法也会出现此错误。我尝试了“点击”,结果相同。我查看了源代码,它看起来与执行时触发器中显示的 id 匹配:ct100_ContentPlaceHolder1_btnCompleteHidden。
  • 必须通过 包含 jQuery 文件。您的页面是这种情况吗?
  • 我不这么认为,我会试试这个...谢谢
  • 请确保在您自己的
  • 啊,我明白我为什么错过了。我作为示例使用的程序从后面的代码中添加了这个。那应该解决这个问题。谢谢你。私有无效 InitJavascript() { if (Page.User.Identity.IsAuthenticated) { ScriptManagerProxy smp = new ScriptManagerProxy(); smp.Scripts.Add(new ScriptReference("~/Scripts/jquery-1.3.1.js")); Controls.Add(smp); } }
【解决方案2】:

我没有看到任何 ID 为“Button”的 ASP 元素。不应该是这样的:

$('#<%=btnCompleteHidden.ClientID %>').click();

我在这一行看到了你的 javascript 代码:

        switch (Result){
                    //Update the member download statistics and rebind the grid 
            case 0: $('#btnCompleteHidden').click();

这行不通,因为您应该使用 ClientID 而不是服务器端 ID。

        switch (Result){
                    //Update the member download statistics and rebind the grid 
            case 0: $('#<%=btnCompleteHidden.ClientID %>').click();

这应该可行

【讨论】:

  • 抱歉,我没有用我使用的实际代码更新我展示的所有格式。使用您在此处显示的确切代码,我仍然得到相同的结果。
【解决方案3】:

对我来说,问题出在页面中包含的外部 javascript 文件中。 在该文件中,我调用了不存在的函数(已注释掉)。删除对未定义函数的调用后,问题解决了

【讨论】:

    【解决方案4】:


    如果您在较旧的 IE 浏览器上进行测试,并且您的缓存没有被清除,则您的页面可能不会随着您所做的任何更改而呈现。

    试试这个:

    1. 使用 Ctrl + Shift + 清除浏览器的缓存 删除

    2. 使用 Ctrl + F5

    3. 刷新浏览器窗口


    希望您的更改现在能够呈现,只要它在语法上是正确的。否则,我听说通常出于这个原因在开发时关闭缓存是一个好主意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-25
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多