使用javascript访问iframe中的asp.net隐藏字段控件?

时间:2015-10-13 17:48:34

标签: javascript asp.net vb.net iframe captcha

我在我的Default.aspx页面中使用了iframe来加载Captcha图像。在Captcha.aspx文件中,我生成了随机数并将随机数分配给隐藏字段。

Captcha.aspx:

<asp:hiddenField runat="server" ID="hdnCaptcha"/>

Captcha.aspx.vb:

hdnCaptcha.Value = randomNumber

Default.aspx的:

<iframe id="ifrm" src="Captcha.aspx"/>

使用Javascript:

var iframe = document.getElementById('ifrm');
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
var captcha = innerDoc.getElementById('hdnCaptcha').value;

隐藏字段验证码值始终返回null。如何从Iframe源页面访问隐藏字段值?

1 个答案:

答案 0 :(得分:1)

ASP.NET在生成的html中生成ID,这比您在aspx标记中看到的长。所以你能做的是:

  1. 将真实客户端ID插入javascript。只有当js代码位于aspx文件本身而不是单独的js文件中时,这才有效:

    var captcha = innerDoc.getElementById('<%= hdnCaptcha.ClientID %>').value;
    

    由于您正在处理可能不适合您的iframe。然后参考

  2. 将隐藏字段的ID模式设置为静态。这将迫使ASP.NET按原样输出id,无需添加。请注意,在这种情况下,您的工作是保证iframe页面上只有一个具有此ID的控件:

    <asp:HiddenField runat="server" ID="hdnCaptcha" ClientIDMode="Static" />