从iframe内部获取url变量

时间:2012-11-12 11:30:12

标签: javascript jquery iframe

除了iframe之外,我无法控制任何事情。

我的表单位于iframe中,我想获取一个来自父链接的变量。

不确定它作为父网址的可能性是否是另一个域。

我无法提供实时网址,但例如:

www.theredomain.com?ref=variable是父网址

我需要从我的iframe中获取'ref'变量,该iframe位于不同的域中。我已经尝试了以下但它似乎没有做任何事情。

<script language="javascript">
function getUrlVars() {
var vars = {};
var parts = window.parent.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
    vars[key] = value;
});
return vars;
}
var first = getUrlVars()["ref"];
alert(first);
</script>

3 个答案:

答案 0 :(得分:1)

如果iframe位于其他域中,则无法访问该iframe中的父级。

答案 1 :(得分:0)

在不在同一个域中的两个iframe之间发送数据的一种方法是,如果您有权访问这两个iframe以扩展它们,那就是使用postMessage

这是相当直接的。一方面,你实现了一些js作为事件监听器,它识别它来自的url,另一方面,你使用.postMessage方法发送到那个父iframe。检查浏览器支持是否适用于您。

答案 2 :(得分:0)

感谢输入人员 - 终于解决了它。我使用下面的函数来从引用者URL

中分出变量
    <script>  
      function getUrlVars() {
    var vars = {};
    var parts = document.referrer.replace(/[?&]+([^=&]+)=([^&]*)/gi, function    (m,key,value)   {
    vars[key] = value;
      });
    return vars;
      }
     </script>

然后将其放入我的表格中,如

    <script>
        $("#submit").click(function() {
       var first = getUrlVars()["ref"];
        $(".referer").val(first);
        }); 
    <script>