Как изменить URL «родительского» фрейма? - PullRequest
5 голосов
/ 06 декабря 2010

У меня есть веб-сайт, который я сам размещаю.У меня нет статического IP-адреса, поэтому весь трафик для моего домена перенаправляется с маскировкой в ​​мою учетную запись DDNS.Полученная страница выглядит следующим образом ...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <title>mydomianname.com</title>
</head>
<frameset rows="100%,*" border="0">
  <frame src="http://myddns.dyndns.org/mydomainname" frameborder="0" />
  <frame frameborder="0" noresize />
</frameset>
</html>

Как я могу обновить URL-адрес "родительского" фрейма, когда пользователи переходят в "дочерний" фрейм?

ОБНОВЛЕНИЕ: Успех?

Я пытался сделать это с помощью javascript, но у меня возникла проблема с получением правильного href для моей функции javascript без побочных эффектов (при наличии двух открытых окон и основного окнаперейдите в неправильное место или сделайте так, чтобы кнопка «назад» работала неправильно).Все, что мне было нужно, это атрибут моего тега a для хранения значения, которое я мог бы использовать в своем javascript, но больше ничего не делал бы.Добавление атрибутированного события value, хотя оно не является нативным атрибутом, к тегу a прекрасно работает.

Тег a ...

<a onclick="url_update(this);" value="test/test.html" href="javascript:void(0);">test link</a>

и функция javascript...

function url_update(element){
    base_url = 'http://mydomain.com/';
    window.parent.location.href = base_url + element.getAttribute('value');
}

в результате обновленный URL-адрес будет ...

http://mydomain.com/test/test.html

... и никаких ранее упомянутых побочных эффектов нет.

Единственный «побочный эффект», который я хотел бы исправить, - это отображение ссылки в информационной панели в нижней части окна браузера. Прямо сейчас это говорит javascript:void(0);, потому что это то, что написано в моем *Атрибут 1031 *, но мне бы хотелось, чтобы он отображал обновленный URL, когда ссылка наведена на ... какие-либо мысли?

Было бы еще лучше, если бы я мог удалить весь этот JavaScript и использовать URL IIS 7Перепишите 2.0, чтобы сделать это вместо этого ... но мне еще предстоит освоить черное искусство переписывания URL.

Ответы [ 3 ]

9 голосов
/ 06 декабря 2010

javascript:

window.top.location = 'anther url'

- ОБНОВЛЕНИЕ для вашего обновленного вопроса

используйте element.getAttribute('value') вместо element.value

- ОБНОВЛЕНИЕ # 2 Используйте hrefатрибут, однако, добавьте return false; к функции onclick:

<a onclick="url_update(this);return false;" value="test/test.html" href="test/test.html">test link</a>

Как только вы это сделаете, вы можете также пропустить атрибут value и просто использовать свойство href, обновив свою функцию url_update для использования element.href вместо element.value

4 голосов
/ 06 декабря 2010

Трудно сказать по вашему вопросу, какие именно кадры делают, но если решение Scrum Meister работает для вас, вы можете легко реализовать то, что хотите, добавив это к каждому из ваших тегов A.

 target="_top"

Ваш пример изменен.

<a href="test/test.html" target="_top">test link</a> 

Вы также можете сделать это с помощью jquery ... На странице, где все теги A должны иметь target = "_ top", вы можете реализовать следующий код jquery настраницы, и он будет динамически добавлять цель ко всем ссылкам.

<script language="javascript" type="text/javascript">
$(function()
{
     $("A").attr("target","_top");
});
</script>

Если предполагается, что у вас есть тэги normail A с атрибутом href, вы можете полностью избавиться от onclick, никакой другой JavaScript не требуетсяс целевым решением.

2 голосов
/ 06 декабря 2010

Сначала вы должны быть в одном домене ... в противном случае по соображениям безопасности вы не можете изменить его Объявите и вызовите эту функцию в вашем дочернем фрейме

function change(theUrl){

window.parent.reloadContent(theUrl);
}

У вашего родителя есть следующая функция:

function reloadContent(theUrl){
  if (theUrl != ""){ 
      document.getElementById("frameID").src= theUrl ; 
  } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...