今天由于客戶對功能提出新要求。采用js操作iframe解決問題。特記錄其中遇到的問題。
用Js控制iframe內表單提交
代碼如下:
 1<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
 2<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 3<html>
 4  <head>    
 5    <title>c.jsp</title>
 6    
 7    <meta http-equiv="pragma" content="no-cache">
 8    <meta http-equiv="cache-control" content="no-cache">
 9    <meta http-equiv="expires" content="0">    
10    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
11    <meta http-equiv="description" content="This is my page">    
12
13    <script type="text/javascript">
14    <!--
15        function reg(){
16        jsi.document.all.username.value="xxx";
17        jsi.document.all.userid.value="xxx>";
18        jsi.document.all.flag.value="xxx";
19          jsi.document.forms["jsf"].submit();        
20          window.open("http://js.51baojian.net","_blank");  
21          setTimeout("",3000);
22          window.location.href="http://jss.51baojian.net";
23    }

24    -->
25    </script>
26  </head>
27  
28  <body onload="reg();">
29    <table cellpadding="0" cellspacing="0" border="0">
30        <tr><td>
31            頁面進入中..
32            <iframe id="jsi" name="jsi" frameborder="0"
33                    src="b.jsp" height="0" width="0"
34            ></iframe>
35        </td></tr>        
36    </table>
37  </body>
38</html>
b.jsp代碼為:
1
2<form id="jsf" name="jsf" action="url">
3    <input type="hidden" name="username" value="">
4    <input type="hidden" name="userid" value="">
5    <input type="hidden" name="flag" value="">                
6</form>
7
注意:
頁面加載時,遇到iframe就直接跳過去,加載下面的內容,然后再回來加載iframe,當然也可以理解成遇到iframe又開了一個線程來加載iframe,但是因為涉及到新的IO操作比較耗時,所以如果在iframe下寫了js操作的話,會提示錯誤。可以采用onload來觸發js操作執行。
在注意:(知道的就不要看了)

onload指整個頁面加載完成后再執行init()函數,而不是當頁面加載到<body>時就開始執行。

同樣,onunload指整個頁面卸載完成(關閉)后。