Как запретить IE отображать URL в IFrame при изменении родительского окна - PullRequest
2 голосов
/ 11 марта 2009

При использовании javascript: parent.location.href в IFrame для изменения родительского окна IE кратко меняет содержимое IFrame, чтобы вывести URL-адрес, на который меняется родительский элемент. Firefox, Chrome и Opera просто меняют родительское окно.

Есть ли способ заставить IE пропустить показ URL в IFrame и просто изменить родительский элемент?

[править]

вот пример кода для его дублирования.

Страница Iframe:

<iframe id="finder" name="finder" src="content.html" scrolling="no" height="620" width="620" style="border:1px #c0c0c0 solid;"></iframe>

Страница содержимого:

<a href='javascript:parent.location.href="http://www.google.com"'>test link</a>

Ответы [ 2 ]

7 голосов
/ 11 марта 2009

Это происходит потому, что вы вычисляете выражение, а не вызываете метод.

parent.location.href = "http://www.google.com";

Если мы переместим его в явную функцию, мы больше не увидим поведение:

<a href="javascript:void(parent.location.href = 'http://www.google.com')">test link</a>

Но, конечно, нет причин использовать JS для этого конкретного случая:

<a href="http://www.google.com/" target="_parent">test link</a>

А если бы и было, мы все равно должны грациозно деградировать:

<a href="http://www.google.com/" target="_parent">test link</a>

<script type="text/javascript">
    var links = document.getElementsByTagName('a');
    for(var i=0;i<links.length;i++) {
        if(links[i].target == '_parent') {
            links[i].onclick = handleParentClick;
        }
    }

    function handleParentClick(e) {
        var sender = e ? (e.target || e) : window.event.srcElement;
        parent.location.href = sender.href;
        return false;
    }
</script>
4 голосов
/ 11 марта 2009

Вы можете оставить встроенный javascript, если измените его на:

<a href='javascript:void(parent.location.href="http://www.google.com")'>test link</a>

Обычно выражение "set" также возвращает правую часть выражения. IE принимает возвращаемое значение выражения и отображает его. Поместив «void ()» вокруг него, вы удаляете возвращаемое значение, чтобы IE не отображал его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...