Я использую Java Server Faces, JQuery и JavaScript. Я думаю, что обнаружил ошибку в Firefox. код Этот JavaScript сработал:Ошибка Firefox с версии 18
var list = jQuery('input.myclass');
var item = list.eq(0);
item.click();
top.location.reload(true);
Клик будет ударил a4j: CommandButton, который связан с моим остросюжетного методом «mybean.myaction()». Если я использую Firefox 19 или Firefox 18, можно нажать кнопку. Во всяком случае, перезагрузка страницы происходит слишком быстро. Я вижу это, устанавливая точку останова Eclipse в mybean.myaction() - точка останова никогда не достигалась.
Если я использую Firefox 17, InternetExplorer работает, как и ожидалось, запускается Javascript, происходит щелчок, bean-method настраивает состояние компонента и перезагружается страница.
Заранее благодарим за разъяснение причины такого поведения. В случае необходимости я напишу ошибку в Firefox bugzilla.
UPDATE: это a4j: commandButton, на который щелкнул JQuery;
<a4j:commandButton action="#{mybean.myaction}" value="setMyVal" styleClass="hidden myclass">
<a4j:actionparam name="myparamname" value="MY_VAL" assignTo="#{mybean.myattr}" /></a4j:commandButton>
UPDATE-2: Я играл, чтобы изолировать проблему. Я поместил инструкцию try-catch вокруг блока, и, кроме того, я заменил reload(), чтобы я смог следить за выполнением javascript. Теперь я вижу, что если я вхожу в top.location.host, я перейду к блокировке catch, но мой errorText будет «undefinded». Как это может произойти? Что мне нужно сделать, чтобы узнать больше об этом исключении?
try{ ...
item.click();
// Firefox-Bug in Version ab 18.0.1
var res = top.location.host; //top.location.reload(true);
} catch (e) {
var errorText = e.message; // errorText is undefined!
alert("Exception: " + errorText);
}
ДОПОЛНЕНО-3: она становится чужим и странником ... если я установить Firebug-Breakpoint между item.click() и top.location.reload (правда); все прошло хорошо! Из-за этого, возможно, проблема заключается в a4j. Может быть, разумно уйти на сегодня. Спасибо за вашу помощь до сих пор!
Данный код выглядит хорошо. Я думаю, что обработчик событий имеет некоторое асинхронное поведение, которое вызывает проблемы. Можете ли вы показать нам, что происходит, когда элемент нажат? –
Кажется, вы используете Richfaces здесь. Он поставляется с собственной встроенной версией jQuery. Какую версию Richfaces вы используете? – dcernahoschi
Я использую RichFaces 3.3.x, наверняка это довольно старый, но JQuery.click() должен работать (и отлично работает во всех других областях нашего приложения). Я думаю, проблема в том, что перезагрузка страницы происходит слишком рано. Более того, я не вижу ошибки Javascript в моей консоли Firebug. – Jochen