Как вы определяете HTML, на который нажимали с помощью javascript?

Возможно ли с помощью Javascript или какой-либо другой технологии определить, на какую гиперссылку щелкнул пользователь, без изменения исходного кода гиперссылки.

Например: Можете ли вы щелкнуть кнопку «тег», а затем щелкнуть гиперссылку, размещенную в другом iframe, и иметь возможность вычислить, по какой гиперссылке щелкнул пользователь, без изменения какого-либо исходного кода в этом iframe?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
4 000
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

вам нужно поставить событие на каждую ссылку, и тогда вы получите всю информацию о конкретном клике.

это будет работать только в каком-то документе, поэтому, если вы попытаетесь провести тест между ссылкой внутри iframe и ссылкой на вашей странице, вы не получите событие для ссылки iframe.

чтобы прикрепить событие ко всем ссылкам, которые необходимо запустить по всем ссылкам на странице, лучший способ сделать это - использовать селектор jQuery. или другой js-фреймворк, например YUI

$ ("a"). click (function () { тревога('') });

getElementsByTagName ("a") - предоставит вам все ссылки на странице.

Ответ принят как подходящий

Используя jQuery, вы можете установить контекст вашего выбора. т.е.

$ ('a', $ ('# iframe-id')). click (function () {...});

Затем вы можете реализовать обработчик событий, который будет обрабатывать щелчки гиперссылок iFrame. Свойство "это" в обработчике позволит вам запросить гиперссылку и получить такие свойства, как innerText и т. д.

Я просто подумал о решении, это сработает или есть другие варианты?

Решением было бы проксировать содержимое страницы iframe soruce, заменив href кодом для вызова функции javascript, которая будет определять, на какой href был сделан щелчок.

Затем это можно было бы использовать в сочетании с тегом click, чтобы точно пометить ссылку.

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

Тебе это не нужно. Ваша страница может редактировать содержимое IFrame.

extraneon 18.10.2008 15:31

Что вам нужно ?-)

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

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

- но вы можете добиться успеха только в том случае, если страница поступает из того же домена, что и главная страница, поскольку междоменные сценарии незаконны и, следовательно, невозможны! -)

Я думаю, это должно быть возможно. Содержимое IFrame доступно из внешнего документа (страницы, в которую встроен iframe), поэтому вы должны иметь возможность добавлять обработчики событий (см. Другие ответы) для этих элементов после загрузки iframe.

См. Также Википедия на Iframe, в котором приведены некоторые примеры и фреймворки, которые действительно работают с контентом в IFrame.

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

<iframe id = "framedpage" src = "framedpage.html"></iframe>
<button type = "button" id = "tagbutton">Tag</button>
<script type = "text/javascript">
    function framedclicks_bind() {
        var f= document.getElementById('framedpage');
        var fdoc= f.contentDocument;
        if (!fdoc) fdoc= f.contentWindow.document; // for IE
        if (fdoc)
            for (var i= fdoc.links.length; i-->0;)
                fdoc.links[i].onclick= framedclicks_click; // bind to all links
    }
    function framedclicks_click() {
        alert('You clicked on '+this.href);
        return false; // don't follow link
    }
    document.getElementById('tagbutton').onclick= framedclicks_bind;
</script>

Может потребоваться очистка в зависимости от потребностей приложения (например, чтобы гарантировать, что фрейм всегда загружается перед попыткой привязки, или что может произойти отмена привязки, или что любые щелчки из исходных ссылок запоминаются), но это будет общий форма вещей.

Хорошее решение, чтобы узнать, какой элемент был нажат, - использовать делегирование мероприятия. Если вы прикрепите прослушиватель событий к каждому элементу с помощью цикла (через document.links или document.getElementsByTagName), у вас возникнут две проблемы: - у браузера есть много слушателей, которые нужно поддерживать - события прикрепляются только к элементам, которые были в DOM, когда вы вызывали цикл; любой элемент, динамически добавленный позже, не имеет прослушивателя событий.

Простой пример делегирования событий:

document.onclick = function(e){
    e = e || window.event;
    var t = e.target || e.srcElement;
    if (t.nodeName=='A'){
        alert( t.href );
    }
}

Если вы хотите найти ссылку внутри iframe, просто используйте contentDocument iframe вместо документа.

Другие вопросы по теме