Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Как получить значение адреса http://... открытого в фрейме? (https://javascript.ru/forum/css-html/52965-kak-poluchit-znachenie-adresa-http-otkrytogo-v-frejjme.html)

Alehandr0 14.01.2015 23:42

Как получить значение адреса http://... открытого в фрейме?
 
Из разных источников собрал вот такой скрипт, который должен при нажатии на кнопку "Заполнить форму" передать значение из браузерной строки сайта, который открыт на данный момент в фрейме.
Далее это значение будет обрабатываться и сохранятся.
<?php

if(isset($_POST[new_kartka])) $cont="<p align=center><font color=red>Результат сохранён</font></p>";

if(isset($_POST[http])&&$_POST[http]!="")
  {
	$content='
<html>
<head>
  <title>Фрейм</title>
	<script type="text/javascript">  
	function inputt() {										//	Метка - 1
		var iFrame=document.getElementById("iFrame").src;
		document.getElementById("rez_http").value=iFrame;
		document.getElementById("new_button").innerHTML="<input name=new_kartka type=submit value=Сохранить>";
	}
	</script>
</head>
  <body>
	<form name=enter action=index.php method=post>
	  <p align=center>Сюда должно попасть значение http:// которое во фрейме открыто сейчас
	  <input type=text id=rez_http name=rez_http size=50>											<!--	Метка - 2	--!>
	  <span id=new_button><a href="javascript:inputt()"><font color=green size=+1>Заполнить форму</font></a></span>
	  </p>
	</form>
	<br/>
	<p align=center><a href=index.php>Сбросить поиск</a></p><br/>
	<iframe src="'.$_POST[http].'" id=iFrame align=center width=100% height=500></iframe>			<!--	Метка - 3	--!>
  </body>
</html>';

  }
  else
  {
	$content="
<html>
<head>
  <title>Ввод</title>
</head>
  <body>
  ".$cont."
	<form name=enter action=index.php method=post>
	  <p align=center>Введите адрес для старта нового поиска http://<input type=text name=http size=50>
	  <input name=start type=submit value='Стартовать'></p>
	</form>
  </body>
</html>";
}

echo $content;

?>

Deff 15.01.2015 00:00

Alehandr0,
1. Фрейм на том жа домене, что и форма с кнопкой ?
2. Если на том же,(я так понял, что форма на основой странице),
то адрес фрейма = iFrameName.location.href;

iFrameName -> имя фрейма <iframe name="xxx"
Т.е.
var per = xxx.location.href;

Alehandr0 15.01.2015 01:22

Немного не сработал Ваш вариант ответа.
Возможно задача поставлена некорректно.
Второй подход.
После старта скрипта появляется форма для ввода первоначального http:// адреса с другого домена, вводим, открывается страница с фреймом в котором открылся введённый адрес.
Во фрейме я делаю произвольные переходы, даже на другие домены, и когда мне приглянулась инфа на странице я нажимаю на кнопку "Заполнить форму".
В этот момент срабатывает javascript:inputt() который возвращает http:// адрес открытой сейчас в фрейме страницы.
Результат будет отличаться от первоначального, так как я переходил на другие домены.
. . . . . . . . . ну как-то так . . . . . . . . . .

Deff 15.01.2015 13:12

Alehandr0,
Обращение с главной к фрейму с текущим адресом окна с иного домена запрещено политикой безопасности браузера и лишь имея доступ к установке своих скриптов внутри фрейма можно получить текущий адрес из фрейма, либо пользуя старый ИЕ*типо 6 версии и ниже
Вообще про кроссдоменный скриптинг можно посмотреть тут => http://javascript.ru/ajax/cross-domain-scripting

Alehandr0 15.01.2015 15:28

Deff спасибо за помощь, но я не осилю эту задачу, поэтому отложу на месяц-годик-два до лучших мозгов.
P.S.
Первоначальный скрипт отредактирован до приемлимой версии, но всё-равно не даёт решения задачи.

ruslan_mart 15.01.2015 15:42

А просто src фрейма получить не?

Deff 15.01.2015 16:18

Ruslan_xDD,
Чел хочет получить адрес из фрейма после перехода по нужным/понравившимся ссылкам
Задача решается имхо лишь проксированием фрейма, расположенном во фрейме проксирующего домена, созданого автором

ruslan_mart 15.01.2015 18:23

Deff, ну разумеется твой вариант xxx.location.href работать не будет. :)
Нам же нужно сначала в сам фрэйм попасть:

xxx.contentWindow.location.href

//или

xxx.contentDocument.location.href


Но если фрэйм на другом домене, то никак не получится получить доступ к фрейму.

Deff 15.01.2015 20:53

Цитата:

Сообщение от Ruslan_xDD
Deff, ну разумеется твой вариант xxx.location.href работать не будет.

Этот Вариант давался для условия на том жа домене, что чел опроверг постом ниже

Deff 15.01.2015 20:57

Цитата:

Сообщение от Ruslan_xDD
Но если фрэйм на другом домене, то никак не получится получить доступ к фрейму.

Ток через проксирования ссылки во фрейме собственным ресурсом и обертывания его во фрейм самого прокси, тогда во фрейм с прокси-обертки ставим тот скрипт что я дал+ выкривление назад спроксированной ссылки( либо без обертывание, а чисто АPI к прокси, запроксировавшего фрейм, ибо последний get у него есть, но тут могут быть конфликты по скорости новых кликов юзера и запаздывания ответов прокси сервера)


Часовой пояс GMT +3, время: 12:16.