Javascript 操作 iframe parent/child 變數的方法

最近遇到一個問題,就是android browser無法選取我網頁上list出來的東西。

一般的web page都沒問題,iOS也沒問題,就是到了Android就不行。

那個ListView算是我依照原作者抄來的control,所以我想說手機不相容應該合理,
所以我就自己把那個contorl本來的Content, 用iframe的方式改寫。
只是本來在那個list裡面要傳遞的參數就變成需要傳出來parent window了。
查了許多方法,大概都是使用getElementById()來達成,
只是我也不知道為何,方法很多,但是都不work。最後參考這個網頁成功了
存取Iframe裏的JavaScript變數

他其實也是使用getElementById,只是他後面的.contentWindow真的有起作用,
而且這樣的方式可以直接操作子視窗的javascript variable,方便許多。
網路上有其他方法,需要用input type=hidden id=xxx 然後用getElementById取得這個參數的存取值
不知道為什麼好像都沒辦法很順利地使用,而且代表需要生一個無用的html code出來,
(並不知道原因)所以不太喜歡,所以選擇現在這個方式。

===============PARENT WINDOW==main.html=================

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”zh-TW” lang=”zh-TW”>
<head>
<meta http-equiv=”content-type” content=”text/html; charset=UTF-8″ />
<title>get javascript variables in iframe</title>
<script type=”text/javascript”>
function init(){
     var ifr = document.getElementById(“ifr”).contentWindow; // iframe window object
     alert(ifr.Name);
}
</script>
</head>
<body>
<iframe id=”ifr” src=”./iframe_content.html” onload=”javascript:init();”></iframe>
</body>
</html>

===============CHILD WINDOW==iframe_content.html=================

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”zh-TW” lang=”zh-TW”>
<head>
<meta http-equiv=”content-type” content=”text/html; charset=UTF-8″ />
<title>iframe content</title>
<script type=”text/javascript”>
var Name = “Zeta”;
var Age = 99;
var Pos = “Engineer”;
</script>
</head>
<body>
<h1>Hello World…….</h1>
</body>
</html>

=======================================================

以上完全從上面的網址中的內容取得,只是備忘備份,連原作者Zeta的名字都沒改XD
執行起來就是你叫起main.html的時候,會跳出alert視窗,把子視窗中的javascript變數Name印出來。
在這邊就是會跳出”Zeta”

也就是可以用contentWindow和getElementById搭配來使用
這樣就可以在父視窗直接用.Name存取iframe裡面的變數,整個簡單多了~~~
附上一張執行結果的圖~

真是可喜可樂~可喜可樂~~~

但是
但是
但是
最後我的android browser還是不能選取list物件…………WT..F

302 Views


發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *