2012年11月1日 星期四

iframe是無法處理事件的


iframe是無法處理事件的,首先,你在Tag裡頭,想輸入<iframe onClick = "aFunc()"如果你在Dreamwave 或 Visual Studio 這類有 intelligent senses(忘記是不是這樣拼了)的提示功能的開發工具,你會發現他的提示當中,並沒有onXXXXX,也就是他不處理事件。而且如果想透過JQuery的方式來加入事件跟函式的關連,你會發現,intelligent senses有提示你Enevt可用,但是寫了之後,沒有作用。

你可以用底下的程式碼執行在瀏覽器看看,在body內,有遮掉三行,分別為div, span, iframe,你可以個別打開看看,會發現只有iframe沒有作用。所以,盡量不要在你的架構上「需要去處理iframe」的Event,不然,就不要用iframe了,把該頁面直接寫在這個HTML或PHP就好了。


當然,Google一下,你也會找到解法,比方從iframe內部的頁面傳事件到Parent來,或用AddListener之類的方式,但是有比較困難,暫時還是先避開就好吧。



<!doctype html> 

<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>jQuery (document).ready 教學</title>
    <script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<!-- CSS 區段 -->    
    
    <script language="javascript">
    $(document).ready(function(e) 
    {   
$("body").click(function(e)
{
alert('Mouse Click body.')
$(".OutScreen").text( "Click body" );
});

$(".button").click(function(e)
{
alert('Mouse Click button.')
$(".OutScreen").text( "Click button" );
});
 
$(".OutScreen").click(function(e)
{
alert('Mouse Click Screen.')
$(".OutScreen").text( "Click Screen" );
});
});
    </script>
    
    
    <!-- CSS 區段 -->
<style type="text/css">
.OutScreen
{  
width:600px;
height:400px;
border:solid;
background:#FF6;
}​
    </style>
</head>

    <body>

       這個網頁展示的是在 Body 主體上,放了一個按鈕,跟一個來比較的物件,可發現,iframe是無法處理事件的<br>
       <!--<iframe class="OutScreen" >xxxxx</iframe>-->
       <!--<span class="OutScreen" >xxxxx</span>-->
       <!--<div class="OutScreen" >xxxxx</div>-->

       <button class = "button">按鈕</button> <br>

    </body>

</html>






沒有留言:

張貼留言