1

から発生したJavaScriptのクリックをどのように検出できます<DIV>か?
たとえば<DIV>、ページ上の3つの異なるに3つのAdSense広告があり、広告がクリックされたときに操作を検出してトリガーしたいとします。

<DIV>空のとき、または他の要素を使用したときのクリックを簡単に検出できます。しかし、AdSense広告(コード)のクリックを検出する方法は?

4

3 に答える 3

2

私が知る限り、Adsense 広告は iframe 要素に読み込まれるため、それらにアクセスすると同じオリジン ポリシーに違反します。これは、外部 URL を指す iframe 内のクリックを検出できないため、実行できないことを意味します。

于 2010-01-19T18:16:12.590 に答える
2

jQuery などのフレームワークを使用していますか? その場合、クリック ハンドラーを div の子に追加できます。

targetElement = $("#yourDivId").children()[0]
$(targetElement).click(function(){
    alert("target element was clicked");
});
于 2010-01-19T18:16:41.417 に答える
1

このようなことを本当に達成する必要がある場合は、ユーザーを少し騙します。

iframe をクリックしようとする代わりに、オーバーレイ div を作成して iframe の上に配置します。それにクリックイベントをつけて、divがクリックされたら非表示にします。

リンクをクリックしたような感覚をユーザーに与えますが、正しく機能しませんでした。2 回目にクリックすると、オーバーレイが非表示になるため、既に機能しています。

コード例 (説明のみ):

<html>
    <style>
        .test {
            position : absolute;
            top : 0;
            left : 0;
            width : 300;
            height : 300;
            z-index : 999;
            filter : alpha(opacity = 0);
            opacity : 0;
            background-color:black;
        }
    </style>
    <script>
        function start(){
            var div = document.getElementById("target");
            var source = document.createElement("div");
            source.className = "test";
            document.body.appendChild(source);

            var style = source.style;

            var div2 = document.createElement("div");
            document.body.appendChild(div2);

            source.onclick = function(e){
                style.display = "none";
                div.onmouseout = function(){
                    div2.innerHTML = "mouseout";
                    style.display = "";
                    div.onmouseout = null;
                }
                div2.innerHTML = "clicked";
            }
        }
    </script>
    <body onload="start()">
        <div id="target">
            <iframe src="http://mail.ru" style="width:300;height:300"></iframe>
        </div>

    </div>
</html>
于 2010-01-20T13:14:48.617 に答える