Все вы наверное слышали про same-origin policy.
Вот и я слышал, и думал, что загрузив скрипт с другого домена при помощи
<script src="... нельзя получить доступа к документу, в котором было сделано это подключение.
Но все таки я решил проверить. И каково было мое удивление, когда я не обнаружил никакого ограничения. Ни в одном браузере, в котором я тестировал. Посмотрите сами.
Документ
http://lingcom.ru/i.htm, который подключает скрипт
http://http11.ru/j.js с другого домена.
Для чистоты эксперимента я даже разместил эти файлы на разных хостингах, так что отличаются даже IP.
Надо кликнуть на ссылку или отправить форму (можно даже кликнуть справа от формы) и вы увидите alert() с соответствующими данными.
Содержимое скрипта тривиально. Я регистрирую куда ушел посетитель, если он сделал это посредством ссылки или отправки формы. Я вешаю обработчик события на весь документ и отлавливаю клики, читая href. Так же я вешаю обработчик события на все формы и отлавливаю onsubmit, читая параметры method и action.
document.onclick = event_target;
// в IE событие onsubmit не всплывает
for ( var i = 0; i < document.forms.length; ++i )
document.forms[i].onsubmit = event_target;
function event_target( e )
{
if ( e ) var target = e.target;
else var target = window.event.srcElement;
if ( typeof target.action != 'undefined' ) alert( target.method +':'+ target.action );
else if ( typeof target.href != 'undefined' ) alert( target.href );
}
В чем дело? А как же same-origin policy?