Есть ли способ изменить URL-адрес, если iframe? - PullRequest
3 голосов
/ 02 октября 2011

Я хочу показать страницу моего сайта в iframe на другой странице.Я имею в виду, что вы можете видеть helper.html во время навигации main.php.но я хочу изменить некоторые ссылки в helper.html на некоторые условия, установленные в main.php.

Обычное решение - получить содержимое helper.html и обработать его в main.php, а затем отобразить егоНо это на стороне сервера, я хочу, чтобы этот процесс был на стороне клиента.

Возможно ли это с помощью JavaScript?

Ответы [ 4 ]

2 голосов
/ 02 октября 2011

Если ваши файлы находятся в одном домене, вы можете использовать свойство top.frames, ro ссылаясь на объект window именованных фреймов:

Предположим, что верхний HTML имеет такую ​​структуру:

<iframe name="main" /><iframe name="helper" />

Внутри main:

top.frames["helper"].document.getElementById("linkID").href = "http://newlink.com";

Если вы используете AJAX, вы можете добавить ранее показанный код в обработчик обратного вызова.Если main.php перезагружается при изменении, в коде в тегах <script>.

1 голос
/ 02 октября 2011

Если эти файлы находятся в разных доменах, но у вас есть полный контроль над ними, используйте следующее решение:

  • На главной странице вызовите iframe с параметрами GET.Например:

    <iframe src="foo.html?parameter=value" width="400" height="500"></iframe>
    
  • В iframe анализируют параметры GET с использованием Javascript и показывают соответствующее содержимое:

    // get the current URL
    var url = window.location.toString();
    //get the parameters
    url.match(/\?(.+)$/);
    var params = RegExp.$1;
    // split up the query string and store in an
    // associative array
    var params = params.split("&");
    var queryStringList = {};
    
    for(var i=0;i<params.length;i++)
    {
        var tmp = params[i].split("=");
        queryStringList[tmp[0]] = unescape(tmp[1]);
    }
    
    // print all querystring in key value pairs
    for(var i in queryStringList)
        document.write(i+" = "+queryStringList[i]+"<br/>");
    

    Источник: http://www.go4expert.com/forums/showthread.php?t=2163

1 голос
/ 02 октября 2011

Да, это возможно, если оба кадра находятся в одном домене. См. Пример функции: во фрейме справки id ссылки считается «ссылкой»

function ChangeLink()
{
    var Helpframe = document.getElementById("Helpframe");
    var innerDoc = Helpframe.contentDocument || Helpframe.contentWindow.document;
    var link = innerDoc.getElementById("link");
    link.href="http://www.google.com";
}

Это решение основано на Javascript - Получить элемент из iFrame

1 голос
/ 02 октября 2011

Попробуйте это ...

var myIframe = document.getElementById('SomeIFrame'); 
myIframe.src = 'www.joobworld.com'; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...