私はJavaServerFaces、JQuery、JavaScriptを使用しています。Firefoxでバグを検出したと思います。このJavaScriptコードがトリガーされます:
var list = jQuery('input.myclass');
var item = list.eq(0);
item.click();
top.location.reload(true);
クリックすると、アクションメソッド'mybean.myaction()'に関連するa4j:commandButtonがヒットします。Firefox19またはFirefox18を使用している場合は、ボタンがクリックされる可能性があります。とにかく、ページのリロードが速すぎます。これは、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-statementを配置し、さらにjavascript-executionに従うことができるreload()を置き換えました。これで、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(true)の間にFirebug-Breakpointを設定した場合。すべてうまくいきました!このため、おそらく問題はa4jです。たぶん、今日はやめるのが賢明です。これまでのすべてのあなたの助けに感謝します!