Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получение Url страницы загруженной в iframe (https://javascript.ru/forum/misc/13669-poluchenie-url-stranicy-zagruzhennojj-v-iframe.html)

taraba4 12.12.2010 15:41

хм... к сожалению ничего не происходит((

Aetae 12.12.2010 16:38

Всё работает.
<html>
<head>
	<style type="text/css">html,body,iframe{width:100%;height:100%;border:0;padding:0;margin:0;} html,body{overflow:hidden}</style>
</head>
<body>
	<script type="text/javascript">document.write('<iframe src="http://ajitae.no-ip.org/show'+location.hash.slice(1)+'"></iframe>')</script>
</body>
</html>


По крайней мере в ff, мож и есть какие нюансы с браузерами, но лень смотреть.

taraba4 12.12.2010 17:12

Спасибо, сейчас тогда еще раз попробую протестить...

А не мог бы помочь разобраться с этим: http://javascript.ru/forum/83429-post29.html

taraba4 12.12.2010 17:20

Aetae,
Вообщем то да, работает только в ff((

dionis 12.12.2010 17:37

<html>
<script type="text/javascript">
    function MyIframeIsLoaded() {
        alert('is loaded');
    }
    function MyOnLoad() 
    {
        var frameRequest = document.getElementById("myIFrame");
        frameRequest.setAttribute("src", 'http://www.google.com');
    }
</script>
<body id="myBody" onload="MyOnLoad();">
    <iframe id="myIFrame" onload="MyIframeIsLoaded();">
    
    </iframe>
</body>
</html>


по поводу вашего вопроса, то как только загрузилась страница с другого домена, тут же закрывается весь доступ к этой странички через DOM (в целях безопасности), поэтому после загрузки странички страничка должна кинуть postMessage родительскому окну (в качестве параметра можете передать адрес странички), родительское окно должно подписаться на событие получения сообщений, получить это собщение и вывести его на странички. Как мне кажется лучшим вариантом будет менять хеш родительского окна (как и предложил Aetae, только менять хешь не непосредственно а через отправку сообщений) а при загрузке обрабатывать его и открывать соответственную страницу.
пример http://site.ru#mypage1, http://site.ru#mypag2 и тд.

taraba4 12.12.2010 18:18

dionis,
Вообщем то не совсем понял принцып работы, ну сейчас попробую разобраться...

Не могли бы вы все таки помочь вот с этим постом: http://javascript.ru/forum/83429-post29.html

dionis 12.12.2010 19:05

вобщем с тебя быть добрым и отзывчевым :)
код на сайте http://run.local/index.htm
<html>
<script type="text/javascript">
    PostAjax = {};

    PostAjax.receiveMessage = function (event) {
        window.location.hash = event.data;
    };

    PostAjax.AddEvent = function (obj, eventType, fn) {
        var that = this;
        var tempFunction = function (e) { fn.call(that, e); };
        if (obj.addEventListener) {
            obj.addEventListener(eventType, tempFunction, false);
            return true;
        } else if (obj.attachEvent) {
            var r = obj.attachEvent("on" + eventType, tempFunction);
            return r;
        } else {
            return false;
        }
    };

    PostAjax.AddEvent(window, 'message', PostAjax.receiveMessage);

    function MyOnLoad() {
        var frameRequest = document.getElementById("myIFrame");
        frameRequest.setAttribute("src","http://your.local" + window.location.hash.slice(1));
    }
</script>
<body id="myBody" onload="MyOnLoad();">
    <iframe id="myIFrame">
    </iframe>
</body>
</html>


код на сайте http://your.local/page1.htm
<script type='text/javascript'>
    var url = window.location.pathname;
    var parentUrl = "http://run.local";
    window.parent.postMessage(url, parentUrl);
</script>


запускаем: http://run.local/index.htm#/page1.htm

Aetae 12.12.2010 23:38

Цитата:

Сообщение от taraba4 (Сообщение 83498)
Aetae,
Вообщем то да, работает только в ff((

А если top сменить на parent?

taraba4 13.12.2010 04:21

dionis,
Огромное спасибо за ваш код! Он полностью работает в самых известных браузерах. Но он предназначен лишь для одной из функций. То есть теперь пользователь зная ссылку может зайти на определенную страницу моего удаленного сайта(и за это огромное спасибо!)

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

Я думал попробовать соединить ваш скрипт, со кодом Aetae, но проблема в том, что его метод работает лишь для браузера фаерфох...

Если нет способов изменить его скрипт так, чтобы он стал работать во всех браузерах, то единственный, по моему мнению, способ получить ссылки страницы груженной во фрем остается:
http://javascript.ru/forum/83429-post29.html
http://javascript.ru/ajax/cross-orig...5:-postmessage

Но так как мой js сейчас прямо скажем убог, возможно есть и другие способы!)
Спасибо всем кто помогает мне!)

dionis 13.12.2010 06:46

ну блин всё обьяснять приходится:)
код Aetae не подойдёт так как взаимодействовать между доменнами как в ту так и в другую сторону можно только через
postMessage.

а этот код конечно же нужно дабавить на ВСЕ страницы вашего сайта, ну либо в шаблон на сайте или как оно там называется в php.
этот код как раз и меняет хеш родительского сайта.
<script type='text/javascript'>
var url = window.location.pathname;
var parentUrl = "http://run.local";
window.parent.postMessage(url, parentUrl);
</script>

тоесть он должен быть на всех страницах
http://your.local/page1.htm
http://your.local/page2.htm
http://your.local/page3.htm
http://your.local/page4.htm
и тд.


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