需求說明:兩個JSP頁面,父頁面需要子頁面的內容,但子頁面是隱藏的,具體來說,子頁面是一系列的模板,父頁面要通過id來獲取這些模板,不願意通過<include>方式導入,因為如果模板過多,就導致整個父頁面太大,加載緩慢,以下兩個方案,不知有沒有解決這個問題。
1、通過ajax方式
實現過程:通過ajax請求到子頁面中,子頁面獲取參數id使用java和js變量的交互後,返回需要的模板信息
缺點:把js變量轉換成java變量比較麻煩,需要使用form表單來提交,而且jsp中的java腳本是在服務器端運行的,需要服務器端資源開銷,而且增加了交互次數
2、通過iframe 引入
實現過程:使用iframe引入子頁面,然後通過$(iframe.contents().find("#"+id)[0]).val()獲得需要的模板.
缺點:不確定iframe是不是可以延遲加載,如果也想<include>一樣把整個頁面都導入進來,這個方法也不算ok.
你在打開子頁面的時候,把值傳到子頁面就OK了;
如果不想傳值,就在子頁面使用onload方法使用js將值調用寫入子頁面,然後java裡調用即可,不過這個前提是父頁面需要把js中的值使用隱藏標簽寫在頁面;
兩點
1.既然你用jQuery了,為什麼還要用getElementById()來獲取元素?況且,獲取iframe中元素也沒這麼麻煩啊
$("#id_iframe").contents().find("#id_button_test");這不就好了。。
2.你這部分代碼是寫在a.jsp頁面中了吧?那我估計之所以不運行,是因為你注冊點擊事件的時候,b.jsp頁面還沒有加載完。所以盡管你調試的時候能輸出,但是代碼裡是注冊不上的。把這段代碼寫在b.jsp的window.onload事件中