window.location阻止iframe重定向父窗口

时间:2016-02-03 05:22:53

标签: javascript html html5 iframe

因此,我尝试了多种方法将我加载的内容自动重定向到我的某个页面上的iframe,并且它们似乎总是触发父窗口重新加载/重定向,而不是将iframe定向到其所需的位置。

我知道大多数人都想要相反的情况,当他们在iframe中完成时,他们希望重新加载父窗口或指向其他地方。但在这种情况下,我希望我的脚本继续到另一页。

是否有内置机制不允许iframe在其内部重定向?

让它假装代码是

if(someAction === true) {
   window.location = '/some/new/path/index_new.html?param=something';
}

我还尝试使用window.top.locationwindow.parent.location,我想其他一些随机变体。包括在每个变体的末尾附加.href。如果失败,似乎iframe的父窗口总是重定向而不是实际的iframe本身。

iframe是一个简单的iframe

<iframe src="/original/path/index.html"></iframe>

希望重定向iframe的脚本嵌入/original/path/index.html

1 个答案:

答案 0 :(得分:0)

是的。请发布您的代码或代码片段,以便我们了解您正在使用的代码。我使用Iframe作为一个站点,该站点在同一帧内从父页面打开三个不同的页面,并使用cookie来回显数据。但是,请显示一些html div和/或js,以便我们可以看到你希望它如何工作。这是我工作的一些代码。我使用本地存储

    function Redirect($page) {
      localStorage.setItem('page',$page);
            window.location="validateorder.htm";

           }

    function orderValidate($page) {
      localStorage.setItem('page',$page);
      $arr = $('iframe').contents().find('form').serializeArray();

      $.each($arr,function(i,v){
            createCookie(i,v);
      });


      window.location="ordersummary.htm";
    }

$(document).ready(function(){
    $('iframe').load(function() {
        $page = localStorage.getItem('page');
        $subtotal = localStorage.getItem('subtotal');
        $tax = localStorage.getItem('tax');
        $total = localStorage.getItem('total');
        $table = $('iframe').contents().find('td#optionsPrice');

        $form = $('iframe').contents().find('#frmContact');
        $theform = $('iframe').contents().find('#theform');

        if($table.length > 0){
            $('iframe').contents().find('td#optionsPrice').text($subtotal);
            $('iframe').contents().find('td#tax').text($tax);
            $('iframe').contents().find('td#totalPrice').text($total);
        }

        if($form.length > 0){
            $form.find('input').each(function(){
                $name = $(this).attr('name');
                $type = $(this).attr('type');
                if($type != 'button'){
                    $(this).val(readCookie($name));
                }
            });
        }