我正在使用 Java Server Faces、JQuery 和 JavaScript。我想我在 Firefox 中检测到了一个错误。此 JavaScript 代码被触发:
var list = jQuery('input.myclass');
var item = list.eq(0);
item.click();
top.location.reload(true);
单击将点击与我的操作方法“mybean.myaction()”相关的 a4j:commandButton。如果我使用的是 Firefox 19 或 Firefox 18,则可能会单击该按钮。无论如何,页面的重新加载发生得太快了。我可以通过在 mybean.myaction() 中设置一个 Eclipse 断点来看到这一点——断点永远不会到达。
如果我使用的是 Firefox 17,InternetExplorer 一切都像预期的那样工作,Javascript 被触发,点击发生,bean-method 调整 bean 的状态并重新加载页面。
提前感谢您给我一些想法如何澄清这种行为的原因。如果合适,我将在 Firefox bugzilla 中提交一个错误。
更新:这是被 JQuery 点击的 a4j:commandButton;
<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-block,但我的 errorText 是“未定义”。这怎么可能发生?我该怎么做才能找到更多关于这个异常的信息?
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);
}
UPDATE-3:它变得越来越陌生......如果我在 item.click() 和 top.location.reload(true) 之间设置一个 Firebug-Breakpoint; 一切顺利!因此,问题可能出在 a4j 上。也许今天退出是明智之举。感谢您迄今为止的所有帮助!