Хорошо, поэтому в этом приложении есть iframe, в котором пользователю предоставлены ссылки или некоторая емкость, которая позволяет этому iframe просматривать какой-либо внешний сайт. Затем вы пытаетесь захватить URL-адрес, по которому просматривал пользователь.
Что-то иметь в виду. Поскольку URL-адрес относится к внешнему источнику, вы будете ограничены в том, насколько вы можете взаимодействовать с этим iframe через javascript (или доступ на стороне клиента), это известно как междоменная безопасность браузера, как вы, очевидно, обнаружили , Есть умные обходные пути, как представлено здесь Кросс-доменный, кросс-фреймовый Javascript , хотя я не думаю, что этот обходной путь применим в этом случае.
Все, к чему вы можете получить доступ, это местоположение, которое вам нужно.
Я бы предложил сделать представленный код более устойчивым и менее подверженным ошибкам. Попробуйте иногда просматривать веб-страницы с IE или FF, настроенными на отображение ошибок JavaScript. Вы будете удивлены тем, как много ошибок javascript выдается, в основном потому, что существует множество склонных к ошибкам javascript, который продолжает расти.
В этом решении предполагается, что рассматриваемый iframe является тем же контекстом "окна", в котором вы запускаете JavaScript. (Это означает, что он не встроен в другой фрейм или iframe, и в этом случае код javascript становится более сложным, и вам, вероятно, потребуется рекурсивный поиск по иерархии окон.)
<iframe name='frmExternal' id='frmExternal' src='http://www.stackoverflow.com'></frame>
<input type='text' id='txtUrl' />
<input type='button' id='btnGetUrl' value='Get URL' onclick='GetIFrameUrl();' />
<script language='javascript' type='text/javascript'>
function GetIFrameUrl()
{
if (!document.getElementById)
{
return;
}
var frm = document.getElementById("frmExternal");
var txt = document.getElementById("txtUrl");
if (frm == null || txt == null)
{
// not great user feedback but slightly better than obnoxious script errors
alert("There was a problem with this page, please refresh.");
return;
}
txt.value = frm.src;
}
</script>
Надеюсь, это поможет.