我正在使用Java Server Faces,JQuery和JavaScript。我想我在Firefox中發現了一個錯誤。 這段JavaScript代碼被觸發:Firefox版本18以來的Bug
var list = jQuery('input.myclass');
var item = list.eq(0);
item.click();
top.location.reload(true);
的點擊會打一個A4J:的commandButton這是關係到我的行動方法「mybean.myaction()」。如果我使用的是Firefox 19或Firefox 18,則可能點擊該按鈕。無論如何,重新加載頁面發生得太快。我可以通過在mybean.myaction()中設置Eclipse斷點來看到這一點 - 從未達到斷點。
如果我使用的是Firefox 17,InternetExplorer都像預期的那樣工作,Javascript被觸發,點擊發生,bean方法調整bean的狀態並重新加載頁面。
在此先感謝給我一些想法如何澄清此行爲的原因。如果合適,我會在Firefox bugzilla中提交一個錯誤。
更新:這是ajj: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-statement,而且我替換了reload(),以便能夠執行javascript執行。現在,我可以看到,如果我輸入top.location.host,我會跳到catch-block,但是我的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);
}
UPDATE-3:它得到陌生人和陌生人......如果我設置一個螢火蟲,斷點item.click()和top.location.reload(真)之間;一切順利!因此,也許問題是a4j。今天退出也許是明智的。感謝您的所有幫助!
給定的代碼看起來不錯。我認爲事件處理程序有一些異步行爲,導致你的問題。你能告訴我們什麼時候點擊項目? – 2013-03-12 16:49:54
看來你在這裏使用Richfaces。它帶有自己的jQuery嵌入式版本。您使用的是什麼版本的Richfaces? – dcernahoschi 2013-03-12 17:03:22
我使用的是RichFaces 3.3.x,當然這很舊,但JQuery.click()應該可以工作(並且在我們的應用程序的所有其他區域中工作正常)。我認爲問題在於重新加載頁面發生得太早。此外,我無法在我的Firebug控制檯中看到Javascript錯誤。 – Jochen 2013-03-12 17:10:52