簡體   English   中英

如何注冊div click事件?

[英]how to register div click event?

我正在嘗試為我的div注冊clickevent。 如果我將iframe放在div中,它就不會工作。 如果它在外面它會工作。 當iframe在div中時,我怎樣才能使它工作?

HTML:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style>
        #mydiv
        {
            height: 300px;
            width: 300px;
            border: 1px solid;
        }
    </style>
    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
    <script>

        $(function () {
            var clicks = 0;
            $('#mydiv').bind('click', function (e) {
                clicks++;
                $("#numberclicks").html(clicks);
            });
        });

    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <span id="numberclicks"></span>
        <div id="mydiv">
            <iframe id="myframe" src="http://www.jquery.com" width="300" height="300" />
        </div>


    </div>
    </form>
</body>
</html>

iframe正在吞下div的click事件,因為它是一個跨站點腳本的東西,你可以做的是使用z-index將if放在iframe的頂部並從上層div收集點擊。

這是因為實際點擊事件來自iframe的內容, iframe是一個完全不同的文檔。 為了處理這些,您必須附加到該文檔的click事件。

iframe是一個完全不同的DOM文檔,這就是為什么當你點擊DIV時,瀏覽器實際上是在iframe內容上呈現點擊,你可以在iframe上放一個空div來模仿那個,這就像是這個:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style>
        #mydiv
        {
            height: 300px;
            width: 300px;
            border: 1px solid;
        }

        #clickerDiv 
        {
            height: 300px;
            position: absolute;
            width: 300px;
        }
    </style>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script>

        $(function () {
            var clicks = 0;
            $('#mydiv').bind('click', function (e) {
                clicks++;
                $("#numberclicks").html(clicks);
            });
        });

    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <span id="numberclicks">0</span>
        <div id="mydiv">
            <div id="clickerDiv"></div>
            <iframe id="myframe" src="http://www.jquery.com" width="300" height="300" />
        </div>
    </div>
    </form>
</body>
</html>

您可以將click事件鏈接到幻像div,甚至鏈接到主div容器!

所有答案大多都是正確的--IFRAME創建一個新的窗口對象。 您將連接到父窗口中的“#mydiv”元素,而不是IFRAME的窗口。 當在DIV中發生單擊事件時,它將通過DOM樹“冒泡”。 如果事件沒有“停止”冒泡,您可以捕獲並處理任何DIV的父元素中的事件。 但是,因為它位於IFRAME中,所以它將停止在文檔級別冒泡,並且不會繼續在父框架中冒泡。

現在,如果IFRAME與父框架位於同一個域中,則可以訪問該文檔的元素,並將事件處理程序連接到這些元素。 但是,您似乎正在跨越違反“同源政策”的域工作: http//code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_DOM_access

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM