Обнаружение щелчков на элементах DIV, содержащих Javascript? - PullRequest
1 голос
/ 19 января 2010

Как вы можете обнаружить клики по JavaScript, который запускается с <DIV>?
Например, у меня есть 3 объявления adSense в 3 разных <DIV> с на странице, и я хочу обнаружить и инициировать операцию при нажатии на объявление.

Легко обнаружить щелчки на <DIV>, когда он пуст или с любым другим элементом; а как обнаружить клики по объявлению (коду) adSense?

Ответы [ 3 ]

2 голосов
/ 19 января 2010

вы используете какие-либо фреймворки, такие как jQuery?если это так, вы можете добавить обработчик кликов для дочернего элемента div:

targetElement = $("#yourDivId").children()[0]
$(targetElement).click(function(){
    alert("target element was clicked");
});
2 голосов
/ 19 января 2010

Насколько мне известно, реклама Adsense загружается в элемент iframe, поэтому доступ к ним нарушает ту же политику происхождения. Это означает, что вы не можете обнаружить клики в iframe, указывающие на внешний URL, поэтому это невозможно сделать.

1 голос
/ 20 января 2010

Если бы мне действительно нужно было достичь чего-то подобного, я бы немного обманул пользователя.

Вместо того, чтобы пытаться получить клик на iframe, создайте оверлей div и поместите его выше iframe. Присоедините к нему событие click, а когда щелкает div, скрывайте его.

Это даст пользователю ощущение, что он нажал на ссылку, но это не сработало правильно. Во второй раз, когда он щелкнет, оно уже сработало, потому что оверлей скрыт.

Пример кода (только для пояснения):

<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>
...