ScriptEngine
プログラムの特定の条件下で、Java を使用してバッキング Bean から JS 関数を呼び出しています。問題は、JSF ページが iFrame で実行されていることです。この段階では iFrame は本当の問題ではありませんが、新しいページを閲覧できるようにしたいと考えています。このために、私は使用top.window.location
してparent.location
おり、ボタンのクリックで問題なくiFrameからページをロードします。
これは、私がこれに使用しているコードのサンプルです:
ScriptEngine se = new ScriptEngineManager().getEngineByName("JavaScript");
se.eval("function someFunc(){parent.location = \"www.someurl.com\";}");
Invocable invocableJS = (Invocable) se;
invocableJS.invokeFunction("someFunc");
と私はparent.location
、top.window.location
それらがブラウザ自体から呼び出され、JavaScriptではないことを読みました。このため、次のエラーが発生します。
javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "parent" is not defined. (<Unknown source>#1) in <Unknown source> at line number 1
document.getElementById("someComponent")
および他の同様のものとまったく同じです。そして、エラーはsun.org.mozilla.....
Chrome 、 IE 、および FF で一緒に残っているようです。
質問: JS 関数で を使用するにはどうすればよいparent.location
ですか? 使用されているブラウザを確認し、ブラウザに応じてそこから何かをインポートまたは呼び出す必要があると思いますが、これを行うためにどのように仕事に行くべきかわかりません。この問題に光を当てられる可能性がある場合は、非常に役立ちます。
前もって感謝します。