Это мучило меня некоторое время.
В моем приложении есть страница, которая является страницей содержимого. На главной странице asp.net есть элемент управления меню.
Этот элемент управления меню представляет собой пользовательский элемент управления, который содержит объект и всю обработку событий для привязки меню к различным файлам карты сайта в зависимости от пользователя.
Страница содержимого имеет форму с различными формами и сетками с панелями обновления для объединения сложного объекта. По завершении пользователь отправляет форму, и он должен создать новый объект.
Проблема заключается в том, что при обновлении одного из видов сетки или отправке формы я получаю сообщение об ошибке «Событие» - неопределенная из файла ScriptResource.axd, и похоже, что код взят из элемента управления ASP. Вот контекст, в котором происходит ошибка. Он ломается сразу после Menu_ClearInterval ():
function Menu_HideItems(items) {
if (document.body.__oldOnClick) {
document.body.onclick = document.body.__oldOnClick;
document.body.__oldOnClick = null;
}
Menu_ClearInterval();
разрывается на этой строке:
if (!items || ((typeof(items.tagName) == "undefined") && (items instanceof Event))) {
items = __rootMenuItem;
}
var table = items;
if ((typeof(table) == "undefined") || (table == null) || !table.tagName || (table.tagName.toLowerCase() != "table")) {
table = WebForm_GetElementByTagName(table, "TABLE");
}
if ((typeof(table) == "undefined") || (table == null) || !table.tagName || (table.tagName.toLowerCase() != "table")) {
return;
}
... rest of function
}
Контекст для функции имеет переменную items
, которая выглядит так, как будто содержит данные о событиях, например:
{ type: "click", target: { id: "btnAddItem" }, Methods: stopPropagation() }
Не уверен, что это важно. Все остальные местные жители в настоящее время не определены.
У кого-нибудь была такая проблема раньше? Любая помощь приветствуется. Это производственная проблема, и если не считать ее переписывания для использования чистого jquery и ajax (не быстрое решение), я не уверен, что еще делать.
Заранее спасибо за помощь!
РЕДАКТИРОВАТЬ: Чтобы было ясно, я не уверен, что это элемент управления меню, вызывающий ошибку, только то, что окружающий код в файле ScriptResource.axd выглядит как код меню.
EDIT2 (Воспроизводимый!): Хорошо, более подробно. Эта ошибка возникает, если я наведите курсор мыши на элемент управления меню после загрузки страницы. Если я не парить, это не произойдет, и все работает нормально. Если я наведите курсор мыши, это приведет к ошибке в следующем сообщении ajax. Эта страница помогла мне понять это. Мысли?
Разметка меню:
<asp:Menu ID="mainMenu" runat="server" Orientation="Horizontal" OnMenuItemDataBound="mainMenu_MenuItemDataBound">
<StaticMenuStyle CssClass="menu" />
<StaticMenuItemStyle CssClass="menuItem" />
<StaticSelectedStyle CssClass="menuSelected" />
<StaticHoverStyle CssClass="menuHover" />
<DynamicMenuItemStyle CssClass="menuItem dMenuItem" />
<DynamicSelectedStyle CssClass="menuSelected dMenuSelected" />
<DynamicHoverStyle CssClass="menuHover dMenuHover" />
<LevelSubMenuStyles>
<asp:SubMenuStyle CssClass="menu" />
<asp:SubMenuStyle CssClass="subMenu" BackColor="#DDDDDD" />
</LevelSubMenuStyles>
<LevelMenuItemStyles>
<asp:MenuItemStyle CssClass="menuItem" />
<asp:MenuItemStyle CssClass="subMenuItem" />
</LevelMenuItemStyles>
<DataBindings>
<asp:MenuItemBinding DataMember="siteMapNode"
TextField="title" NavigateUrlField="url" />
</DataBindings>
</asp:Menu>