簡體   English   中英

從.ascx文件調用Javascript函數時出錯

[英]Error invoking Javascript function from .ascx file

我將VS 2003應用程序遷移到了VS2010。該應用程序具有在default.aspx中引用的side_menu.ascx。 在side_menu.ascx中,將調用side_menu.js中存在的javascript函數菜單

但是,調用功能菜單時,會在運行時出現錯誤- '找不到功能菜單'在VS 2003中可以正常工作

這是我收到此錯誤的地方-此代碼在side_menu.ascx中

 new menu (SIDE_MENU_ITEMS, SIDE_MENU_POS, SIDE_MENU_STYLES)

這是default.aspx中的代碼

                    <!-- Side Menu -->
     <td valign="top" class="page_side_menu">
        <mycontrols:sidemenu id="SideMenu1" runat="server"/>
        </td>

這是side_menu.ascx中的代碼

<%@ Control Language="vb" AutoEventWireup="false" Codebehind="side_menu.ascx.vb" Inherits="TOrders.UI.Controls.SideMenu" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<table cellPadding="0" width="100%">
<tr>
    <td vAlign="top" align="left" width="100%">
        <table cellSpacing="10" cellPadding="0" width="100%">
            <tr>
                <td align="left">
                    <asp:Literal ID="litError" Runat="server" Text="<font color=#E0E0E0 size=1>*&nbsp;</font>" Visible="False"></asp:Literal><asp:label id="lblJump" runat="server" ForeColor="#E0E0E0" Font-Size="XX-Small">Jump to Telex/Order:</asp:label>
                    <br>
                    <asp:textbox id="txtJumpTo" runat="server" Width="125px" CssClass="textbox"></asp:textbox>&nbsp;<input type="button" value="Go" runat="server" id="btnGo" class="TabOut-Button">
                </td>
            </tr>
        </table>
    </td>
</tr>
</table>
<script language="JavaScript" src="~/library/scripts/side_menu.js"     type="text/javascript"></script>
<script language="JavaScript" src="~/library/scripts/side_menu_items.js" type="text/javascript"></script>
<script language="JavaScript" src="~/library/scripts/side_menu_tpl.js" type="text/javascript"></script>
<script language="JavaScript" type="text/javascript">
<!--
new menu (SIDE_MENU_ITEMS, SIDE_MENU_POS, SIDE_MENU_STYLES);
// -->
</script>

這是javascript函數side_menu.js

var menus = [];

function menu (item_struct, pos, styles) {
// browser check
this.item_struct = item_struct;
this.pos = pos;
this.styles = styles;
this.id = menus.length;
this.items = [];
this.children = [];

this.add_item = menu_add_item;
this.hide = menu_hide;

this.onclick = menu_onclick;
this.onmouseout = menu_onmouseout;
this.onmouseover = menu_onmouseover;
this.onmousedown = menu_onmousedown;

var i;
for (i = 0; i < this.item_struct.length; i++)
    new menu_item(i, this, this);
for (i = 0; i < this.children.length; i++)
    this.children[i].visibility(true);
menus[this.id] = this;
}

嘗試從javascript src路徑中刪除波浪號(〜),並確保路徑實際上正確

對我來說是相同的,因此解決方案是:更改相對路徑,讓其移走根目錄〜/

之前

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="wucDTmisc1.ascx.vb"      Inherits="wucDTmisc1" %>
<%@ Register Src="wucBeneficiarios.ascx" TagName="wucBeneficiarios" TagPrefix="uc1" %>
<%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
<%@ Register Src="Controles/wucMoneda.ascx" TagName="wucMoneda" TagPrefix="uc1" %>
<link href="~/css/content.css" rel="stylesheet" type="text/css" />
<link href="~/css/Blue.css" rel="stylesheet" type="text/css" />
<script src="~/js/siscli.js" type="text/javascript"></script>
<script src="~/js/json2.js" type="text/javascript"></script>
<script src="~/js/date.js" type="text/javascript"></script>

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="wucDTmisc1.ascx.vb"      Inherits="wucDTmisc1" %>
<%@ Register Src="wucBeneficiarios.ascx" TagName="wucBeneficiarios" TagPrefix="uc1" %>
<%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
<%@ Register Src="Controles/wucMoneda.ascx" TagName="wucMoneda" TagPrefix="uc1" %>
<link href="/css/content.css" rel="stylesheet" type="text/css" />
<link href="/css/Blue.css" rel="stylesheet" type="text/css" />
<script src="/js/siscli.js" type="text/javascript"></script>
<script src="/js/json2.js" type="text/javascript"></script>
<script src="/js/date.js" type="text/javascript"></script>

同樣在尋找解決方案時,我意識到在控件中最好保留JS代碼。

它對我有用,我也希望你。

您需要的可能是這里介紹的內容 您必須將“〜”替換為用戶控件,該控件將遵循用戶當前所在的位置而不是用戶在應用程序中的實際位置。

<script language="javascript" type="text/javascript" src="<%=Page.ResolveUrl("~/JS/VerticalMenu.js")%>"></script>
<script language="javascript" type="text/javascript" src="<%=Page.ResolveUrl("~/library/scripts/side_menu_items.js")%>"></script>
<script language="javascript" type="text/javascript" src="<%=Page.ResolveUrl("~/library/scripts/side_menu_tpl.js")%>"></script>

解決

我終於找到了解決問題的辦法。 這是與腳本標簽

我改寫為

<script src="../library/scripts/side_menu.js" type="text/javascript" />

代替

<script src="../library/scripts/side_menu.js" type="text/javascript"></script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM