Применить onClick to Iframe

Есть ли способ «инкапсулировать»? iframe с другим элементом для симуляции onClick? Я знаю, что Iframe не поддерживает события, но мне нужно отслеживать клики с моего веб-сайта, которые покидают Iframe.

Спасибо!

Ответы на вопрос(3)

Решение Вопроса

политика того же происхождения), вы можете напрямую взаимодействовать с его документом:

<script type="text/javascript">
window.onload = function() {
    var oFrame = document.getElementById("myframe");
    oFrame.contentWindow.document.onclick = function() {
        alert("frame contents clicked");
    };
};
</script>

Если он содержит внешнюю страницу, то вам не повезло - по очевидным причинам безопасности вы не можете делать то, что хотите. Хотя все содержимое визуально является частью одной и той же страницы, фреймы, поступающие из разных доменов, должны оставаться отдельными с точки зрения сценариев. В противном случае любая страница может, например, создайте скрытый iframe, загружающий вашу веб-почту, и украдите из него сессионный cookie. Все данные доступны пользователю, но не должны быть доступны автору страницы.

 09 апр. 2012 г., 11:58
@TheGateKeeper см.this не могу объяснить лучше, чем это.
 TheGateKeeper09 апр. 2012 г., 11:53
Почему это из соображений безопасности? Содержание отображается на моей странице.
 09 апр. 2012 г., 11:57
@TheGateKeeper будет отображать контент, но скрипт не сможет получить доступ к контенту, если он находится в другом домене.
 TheGateKeeper09 апр. 2012 г., 12:00
Но технически не будет ли содержание на Iframe на моей странице?
 09 апр. 2012 г., 12:00
@TheGateKeeper да, но браузер не позволяет вам получить к нему доступ

https://github.com/vincepare/iframeTracker-jquery

Поскольку невозможно читать содержимое iframe (DOM) с родительской страницы из-за одной и той же политики происхождения, отслеживание основано на событии размытия, связанном с системой мониторинга границ страницы / iframe, сообщающей, какой iframe является курсором мыши в любой момент времени. ,

Сопоставьте элементы iframe, которые вы хотите отслеживать, с помощью селектора jQuery и вызовите iframeTracker с помощью функции обратного вызова, которая будет вызываться при обнаружении щелчка по iframe:

jQuery(document).ready(function($){
    $('.iframe_wrap iframe').iframeTracker({
        blurCallback: function(){
            // Do something when the iframe is clicked (like firing an XHR request)
        }
    });
});

И еще много вариантов.

ка в iframe. Более конкретно, если вы используете более новую версию Googleanalytics.js код отслеживания с отслеживанием событий для отслеживания кликов в iframe, приведенный выше код будет выглядеть следующим образом:

<script type="text/javascript">
window.onload = function() {
    var oFrame = document.getElementById("myframe");
    oFrame.contentWindow.document.onclick = function() {
        ga('send', 'event', 'link', 'click', 'My Frame Was Clicked');
    };
};
</script>

и iframe может выглядеть следующим образом (обратите внимание на то, что id = «myframe» упоминается в javascript):

<iframe id="myframe" src="http://www.yourowndomain.com" scrolling="yes" marginwidth="0" marginheight="0" vspace="0" hspace="0" height="800" style="border:0; overflow:hidden; width:100%;"></iframe>

Затем, чтобы проверить событие, нажмите, если вы знакомы с отслеживанием событий Google, на панели инструментов Google Analytics в разделе Стандартные отчеты & gt; В реальном времени & gt; События, по которым клик будет отображаться как «Действие события»: щелчок, Метка события: «Мой кадр был кликнут». Или на длительный срок в панели инструментов под поведением & gt; События.

Я проверил это, и, как указывал предыдущий автор, это будет работать, только если источник iframe находится в том же домене.

Ваш ответ на вопрос