是否可以通过检索iframe的源参数来更新隐藏的表单字段的值?

时间:2012-09-26 19:03:55

标签: javascript jquery forms

<script>
            /* source parameters */
                    function GetURLParameter(sParam)
                    {
                        var sPageURL = window.location.search.substring(1);
                        var sURLVariables = sPageURL.split('&');
                        for (var i = 0; i < sURLVariables.length; i++)
                        {
                            var sParameterName = sURLVariables[i].split('=');
                            if (sParameterName[0] == sParam)
                            {
                                return sParameterName[1];
                            }
                        }
                    }
                    var mysrc = GetURLParameter("externalsrc");
                    if(mysrc == null) {
                        mysrc='another_site';
                        }
                    var objHidden = document.getElementById("externalsrc");
                    objHidden.value = mysrc;
</script>

之前,我曾经在我的网站的HTML页面中直接硬编码表单代码时使用上面的代码。上面的代码很容易从地址栏中检查url参数,并将externalsrc的值赋给表单字段的值。现在,我创建了一个可在外部其他地方使用的可移植iframe小部件。我想从iframe的extsrc参数更新<input type="hidden" externalsrc="" value"" />的值。

以下是iframe代码示例:

<iframe src="http://www.example.com/joinuswidget.html?externalsrc=mywidget" marginheight="0" marginwidth="0" frameborder="0" height="350" scrolling="no" width="190"></iframe>

我希望我的表单的externalsrc的值是“mywidget”直接取自iframe的源代码。可能吗?

谢谢,

1 个答案:

答案 0 :(得分:2)

有关如何将字符串转换为某个位置的信息,请参阅此问题:Creating a new Location object in javascript

function convertStringToLocation(str) {
  var url = document.createElement('a');
  url.href = str;

  return url;
}

然后更新你的GetURLParameter函数以接受任何url:

function GetURLParameter(url, sParam) {
  var sPageURL = url.search.substring(1);
  // Everything past here is the same
}

最后从你的iframe中获取src:

var iframe = document.getElementById('myiframe');
var input = document.getElementById('externalsrc');
var url = convertStringToURL(iframe.src);
input.value = GetURLParameter(url, "externalsrc");