如何访问iframe的当前位置?

时间:2010-09-28 20:22:28

标签: iframe https location

问题是我使用iframe通过https上的POST处理登录表单,但托管iframe的父级是http(尽管在同一个域中)

这可行吗?

我还不能测试这个,因为我只能在我们的暂存环境中使用https。

由于

  function process_form(f){


    var l = $("iframe#loginFrame");    
    if(l.length==0){      
      f.attr("target","loginFrame");      
      $('<iframe src="/player.htm?ajax=1"'+(!_DBG?' class="hide"':'')+' id="loginFrame" name="loginFrame"></iframe>').prependTo('body');      
      $("iframe#loginFrame").load(function() {
        var u = this.contentWindow.location;


        if(String(u).indexOf("confirm")>=0){ 
          change_form(1);
        }else if(u!=this.src){
          change_form(0);
        }
        log(u);
        log(this.src);

      });



    }else{
      warn("Frame already exists!"); 
    }

    change_form(-1);
    setTimeout(function(){ f.submit();},500);
    log(f);
  }

3 个答案:

答案 0 :(得分:2)

document.getElementById('iframename').src您要找的是什么?

修改

这似乎是previously answered。试试document.getElementById("iframename").documentWindow.location.href

答案 1 :(得分:2)

简短的回答,是的。要访问iframe的位置,顺便说一句,请使用myIframe.contentWindow.location。有关详细信息,请参阅http://www-archive.mozilla.org/docs/dom/domref/dom_frame_ref16.html

不同协议中的两个帧(http vs https)有不同的来源,所以你不能做任何需要同源权限的事情。

来自http://en.wikipedia.org/wiki/Same_origin_policy#Origin_determination_rules

  

术语“起源”是使用   域名,应用层   协议,和(在大多数浏览器中)TCP   运行该文件的HTML文件的端口   脚本。

但无论同源政策如何,都应该可以访问该位置。

答案 2 :(得分:1)

您可以在子框架中调用父级,以便在子框架加载时可以执行

domready中{   parent.form.hiddenField.value = document.location.href }

基本上你从孩子回到父母。如果孩子可以在父母中调用您可能做的方法并将该位置传递给该方法,则必须进行实验