Vitya Ivanov
29 сообщений
#17 лет назад
Помогите сильно нужно ...
Мне нужно отлавливать клик над iframe через div ...
Помогите
Михаил В.
2195 сообщений
#17 лет назад
Помочь можно - задачу нормально объясните.
Vitya Ivanov
29 сообщений
#17 лет назад
Ну нужно при навидений на iframe алерт чтоли выскакивал или при клике на iframe`e тоже алерт...
Михаил В.
2195 сообщений
#17 лет назад
А в чем проблема?
<iframe src="blablabla.html" onmouseover="alert('это alert')"></iframe>
Vitya Ivanov
29 сообщений
#17 лет назад
Да точно не пробывал... поюзал OnClick и сразу вычеркнул все ... спасибо с этим понятно , а вот как быть с OnClick ?
Михаил В.
2195 сообщений
#17 лет назад
Как-то так blablabla.html - должен быть существующим файлом.
<script type="text/javascript">
function clickme(){
document.getElementById("ya-iframe").contentWindow.document.body.onclick=function(){
alert('это алерт');
}
}
</script>
<iframe id="ya-iframe" src="blablabla.html" onload="clickme()"></iframe>
Вадим Т.
3240 сообщений
#17 лет назад
Sir_Michael, увы, Ваше решение будет работать только в том случае, если blablabla.html находится в том же домене, что и сама родительская страница. В противном случае, если, например, "blablabla.html" заменить на "http://google.com", работать не будет из-за ограничений безопасности браузера (будет ошибка JavaScript "отказано в доступе". Если для автора топика достаточно работать только со страницами одного и того же домена, тогда его счастье, и на этом можно остановиться, но если нет, то предложенный Вами способ ему не подходит.

Если в ифрейме может быть содержимое страницы с другого домена, то IMHO единственное решение данной задачи - это при создании ифрейма поверх него наложить порождаемый в родительском окне прозрачный див, и обрабатывать уже его события. Хотя все равно доступа к контенту ифрейма не будет, но клик над ифреймом ловить будет можно. Это очень неуниверсально, но другого способа решения я не вижу.
Михаил В.
2195 сообщений
#17 лет назад
tvv, с подобным вопросом сталкиваюсь впервые, спасибо за поправку.

Вариант с наложенным div'ом приводить сегодня не буду, завтра уж, если автор сам не разберется.
Вадим Т.
3240 сообщений
#17 лет назад
Sir_Michael, с этим многие не сталкивались, но данное ограничение безопасности - основополагающее в обеспечении безопасности пользователей всей сети интернет.

Если бы этого ограничения не было бы, то например ничего не стоило бы написать на Java Script (или на VB Script, или Java Applet, и т.д.) код, который бы на клиенте скачивал контент с других, заданных хакером сайтов, парcил его, и направлял на сайт хакера. И все это - на компьютере посетителя, просто зашедшего на его сайт подставленный хакером, о оставляя IP этого посетителя. Или можно было бы из браузера любого посетителя сделать дорвей или прокси.

Кстати, большинство уязвимостей IE были (наряду с возможностью чтения чужих кук) именно из-за того, что кто-то находил как это ограничение обходить. Сейчас IE вроде залатали, хотя мало ли, может быть еще нароют подобных дыр.
Vitya Ivanov
29 сообщений
#17 лет назад
Да скорей всего через div нужно просто... Мне нужно по сетям(предмет такой) манипуляций на iframe , я с дуру сказал что сделаю отлов кликов... Помогите если не тяжело...
Вадим Т.
3240 сообщений
#17 лет назад
ldit, лучше напишите пожалуйста, как полностью и дословно сформулировано Ваше задание.

Вполне вероятно, что то, что Вам сказали, сделать невозможно, если источник содержимого ифрейма в другом домене. Наложенный свержу прозрачный див - это скорее не решение, а хак, который лишь имитирует отлов кликов на ифрейме (по сути, это отлов кликов на диве, который над ним, но доступа к сорержимому ифрейма нет).
Vitya Ivanov
29 сообщений
#17 лет назад
Ну да... я понял что нельзя ... Помогите сделать на div`e ...
Вадим Т.
3240 сообщений
#17 лет назад
Вот, первое что в голову пришло:
<style>
iframe, div {
position: absolute;
left: 10px;
top: 10px;
height: 480px;
width: 648px;
}
div {
background: url(transparent.gif);
}
</style>
<iframe src="http://google.com"></iframe>
<div onclick="alert('Click')"></div>

При этом нужно будет использовать прозрачный GIF (это нужно только для IE, для остальных браузеров - не обязательно). Но можно и без него обойтись, только тогда решение будет немного посложенее.

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

P.S. Пожалуйста обратите внимание, при таком подходе мало того что нет доступа к содержимому ифрейма из JavaScript, но и вообще на нем ничего мышкой выбрать нельзя, так как вышеналоженный див все на себя берет, это основной недостаток данного выкрутаса. То есть это годится только лишь для лабораторной работы, но не имеет практического применения.
Vitya Ivanov
29 сообщений
#17 лет назад
А можно както сделать чтобы клик в самом фрейме осуществился и выскачило окно alert('Click' как из дива... Просто подруженая гифка прозрачна но клик на самом фрейме нельзя...
Вадим Т.
3240 сообщений
#17 лет назад
ldit, увы, как я и писал выше - не получится, ограничения безопасности не дадут.
Vitya Ivanov
29 сообщений
#17 лет назад
А может сделать чтото с Div`om так чтобы он он был прозрачен и позволял кликать(я скорей всего не прав) ?
Вадим Т.
3240 сообщений
#17 лет назад
Ну я же написал - нельзя. Если бы это было бы возможно, тогда я из одного окна браузера хакер мог бы перехватывать все, что пользователь вводит в другом окне браузера, причем не только клики мышкой, но и ввод логинов, паролей и т.д. Ограничение безопасности.
Vitya Ivanov
29 сообщений
#17 лет назад
Я тут порылся на сайте и вот что нашол не совсем то но приближенно ...
Вадим Т.
3240 сообщений
#17 лет назад
ldit, заданную в том проекте задачу решить невозможно на любом содержимом div (ведь в div можно и iframe на другой домен вставить).

В принципе, есть шанс что я чего-то не знаю, и по данному вопросу фатально ошибаюсь. Можете попробовать обратиться к фрилансеру, который проект выполнил, может быть он что скажет. Но у меня большие сомнения что сможет побороть задачу в случае iframe в div.
Vitya Ivanov
29 сообщений
#17 лет назад
Стучал ... кинул ссылку ему на форум... может немного поделится нароботками в этом направлений...