2011-06-07 58 views
1

我試圖從Servlet代碼訪問JavaScript函數。但是我得到下面顯示的錯誤。 下面是代碼:從Java訪問Javascript

out.println("<FRAME src=\"javascript:parent.newWindow('" + URL+ "') \" scrolling=No noresize />"); 

而這是一種發生在JavaScript中的錯誤:

對象不支持此屬性或方法;

+0

什麼是「out」? – 2011-06-07 10:35:50

+0

你確定你嘗試從Servlet代碼訪問Javascript函數嗎?也許你嘗試在Servlet代碼中生成Javascript函數? – 2011-06-07 10:36:49

回答

4

您無法從您的servlet代碼訪問Javascript函數。 Javascript在客戶端(=您的用戶的瀏覽器)上執行,servlet代碼在您的服務器上執行(例如Tomcat,JBoss,無論您使用什麼)。

你想用你的代碼完成什麼?我確信有一個比你剛剛描述的更簡單的方法。

[編輯]

我看你剛剛更新了你的描述,所以這裏是我的觀點:

我猜你想顯示頁面給用戶,並在顯示頁面,您想要打開一個新窗口,該窗口將使用URL參數指示其地址來顯示另一個頁面。如果是這種情況,您應該在第一頁的onLoad() Javascript事件中使用window.open()來做到這一點。

+0

是的。你是對的。我需要使用此方法提交發布請求。但window.open默認觸發GET方法。那麼,有沒有其他方法可以做到這一點? – Suki 2011-06-07 11:54:43

+0

@Suki如果你真的需要顯示一個頁面,它會自動提交一個窗體到一個彈出窗口,它可以使用JavaScript來完成,但我認爲它看起來過於複雜。也許如果你會告訴我們你的用例是什麼,那麼我們可以更好地幫助你找到正確的解決方案。我很難相信你會從這種方式建設中受益。 – deltaforce2 2011-06-07 12:45:02

1

window對象(這是parent引用的對象)上沒有newWindow屬性,所以這並不意外。

也許您正在尋找open方法?

如果是這樣的話:

  • 把它作爲一個iframe的src是做
  • 一個很奇怪的東西它可能會通過彈出窗口攔截器被調
0

好。您嘗試在Servlet代碼中生成JavaScript代碼。當你這樣做的時候,你的代碼會轉到Web瀏覽器,並在那裏被看作是一個帶有JavaScript的html文檔。所以,你的錯誤來自網絡瀏覽器,並鏈接到JavaScript錯誤。可能它是newWindow方法。爲了打開新窗口,我應該調用window.open()函數。