我在我的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源页面访问隐藏字段值?
答案 0 :(得分:1)
ASP.NET在生成的html中生成ID,这比您在aspx标记中看到的长。所以你能做的是:
将真实客户端ID插入javascript。只有当js代码位于aspx文件本身而不是单独的js文件中时,这才有效:
var captcha = innerDoc.getElementById('<%= hdnCaptcha.ClientID %>').value;
由于您正在处理可能不适合您的iframe。然后参考
将隐藏字段的ID模式设置为静态。这将迫使ASP.NET按原样输出id,无需添加。请注意,在这种情况下,您的工作是保证iframe页面上只有一个具有此ID的控件:
<asp:HiddenField runat="server" ID="hdnCaptcha" ClientIDMode="Static" />