在iFrame(不同域)表单隐藏字段中抓取父级引用

Grab referrer to parent in iFrame (different domain) form hidden field

本文关键字:字段 抓取 引用 隐藏 表单 iFrame      更新时间:2023-09-26

我正在使用javascript在iFrame中加载表单,并将引用器添加到URL中以将参数传递给iFrame(步骤1)以填充表单上的隐藏字段(步骤2)。

步骤 1 工作正常,并产生类似于以下内容的内容:

http://www.parentdomain.com/parentpage/?refURL=http://www.somereferringURL.com/someRefpage/

第 2 步(我卡住的地方)

function gup( grabREF )
{
  grabREF = grabREF.replace(/['[]/,"'''[").replace(/[']]/,"''']");
  var regexS = "[''?&]"+grabREF+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}
var referrer = gup( 'refURL' );
function start() {
var ref = document.getElementById('my-formfield-id');{
ref.value = referrer;
}
onload = start;       
}

这似乎只是(仍然)将父项作为引用者(http://www.parentdomain.com/parentpage/),并且(实际上)似乎在URL字符串后附加了一个结束标记。表单和父级在不同的子域中。我猜罪魁祸首可能在这里:ref.value = referrer;

有什么想法吗?

我无法让它工作,所以我只抓住 iframe 父级作为引荐来源网址并更改父页面(并在 iframe 中嵌入相同的表单)以捕获我需要的不同广告系列引用 URL。我仍然可以在一个位置抓取它们,因为我使用相同的表单,只有一个父级(登录页面)并将引荐来源传递给父级就好了。

此代码将执行此操作:

 <script type="text/javascript">
    function getParameterByName(name) {
    name = name.replace(/['[]/, "''[").replace(/[']]/, "'']");
    var regex = new RegExp("[''?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results === null ? "" : decodeURIComponent(results[1].replace(/'+/g, " "));
    }
    var refVAL = getParameterByName('refURL');
    //document.write(refVAL);
    function SetValue()
    {
    document.getElementById('my_hidden_formfield_id').value = refVAL;
    //alert(document.getElementById('my_hidden_formfield_id').value);
}
</script>

谢谢你的关注。