Побег из фрейма с помощью JavaScript - PullRequest
3 голосов
/ 10 декабря 2011

Я знаю, как избежать iframe.У меня есть ссылка:

<a id="aaa" href="http://localhost/projectManagement/users" target="_parent" >Sign up</a>

нажав эту ссылку, я вырвусь из iframe

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

Я знаю, как выполнить JavaScript одним нажатием кнопки, поэтому я работал над выполнением этой ссылки с помощью javascriopt

вещей, которые я опробовал:

html: (это внутри iframe)

<button onClick="tempEvent();" style="width: 500px; height: 50px; margin-top: -15px; font-size: 20px;">
      <b>
          click me              
       </b>
</button>
<div style="height: 15px;">
</div>
<a id="aaa" href="http://localhost/projectManagement/users" target="_parent" >Sign up</a>

JavaScript

<script>
    function tempEvent()
    {

        clickLink(document.getElementById('aaa'));  // this technique does not work on firefox!
        fireEvent(document.getElementById("aaa"),'click'); // this technique does not work in firefox eather.

        document.getElementById("aaa").onclick(); 
    }

    function clickLink(link) {
        if (document.createEvent) {
            var event = document.createEvent("MouseEvents");
            event.initMouseEvent("click", true, true, window,
                0, 0, 0, 0, 0,
                false, false, false, false,
                0, null);
            link.dispatchEvent(event);
        }
        else if (link.fireEvent) {
           link.fireEvent("onclick");
        }
    }

    function fireEvent(obj,evt){    
        var fireOnThis = obj;
        if( document.createEvent ) {
          var evObj = document.createEvent('MouseEvents');
          evObj.initEvent( evt, true, false );
          fireOnThis.dispatchEvent(evObj);
        } else if( document.createEventObject ) {
          fireOnThis.fireEvent('on'+evt);
        }
    }



</script>

Я знаю, что могу заменить кнопку ссылкой, но я просто не понимаю, почему я не могу этого добиться!

edit

Даже если я помещу ссылку внутри кнопки, она не работает!

Ответы [ 2 ]

7 голосов
/ 10 декабря 2011

Javascript в parent :

function redirectMe(url) {
    window.location = url;
}

Javascript в child iframe :

function tempEvent() {
    parent.redirectMe('http://localhost/projectManagement/users');
}

Вы можете обойти <a> всевместе, и весь clickLink / fireEvent действительно не нужен.Если вам нужно было активировать событие щелчка по ссылке, проверьте jQuery и его функцию click().

3 голосов
/ 10 декабря 2011
<input type="button" onclick="try { window.parent.location.href = "http://example.com"; } catch(e) { }" />

Или, если вы не знаете URL-адрес, или просто, чтобы сохранить URL-адрес элемента:

<input type="button" href="http://example.com" onclick="try { window.parent.location.href = this.href; } catch(e) { }" />

Помните, что событие onclick не всегда должно ссылаться на функцию. Он способен запускать коды JavaScript прямо из обработчика, хотя большинство предпочитает функции.

Примечание: Я добавил оператор try { } catch(e) { } из-за возможных междоменных проблем, из-за которых при попытке манипулировать родительским окном выдается ошибка.

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