我使用Java ScriptEngine
調用從下的程序一定條件下輔助bean一個JS的功能。問題在於JSF頁面在iFrame中運行。儘管在這個階段iFrame並不是真正的問題,但我希望它能夠瀏覽到新的頁面。爲此,我使用了top.window.location
和parent.location
,它們可以在按鈕上單擊以將頁面加載到iFrame中而不會出現問題。的Java和ScriptEngine的父窗口功能
這是我使用這個代碼的樣本:
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
我已閱讀,他們是從瀏覽器itsself調用,而不是的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
?我想,我需要檢查使用的瀏覽器,然後導入或從那裏取決於瀏覽器中調用的東西,但我不知道我應該怎麼去上班做到這一點。任何可能解決這個問題的光線都會非常有幫助。
在此先感謝。
如果你真正的問題是控制其中的鏈接被打開,你可以只添加相應的[目標屬性的錨(http://www.w3schools.com/tags/att_a_target.asp),例如'目標= 「_頂部」'。 – lefloh