使用 javascript 访问 iframe 内的 asp.net 隐藏字段控件?
Accessing asp.net hidden field control inside iframe using javascript?
我使用 Iframe 在我的 Default.aspx 页面中加载验证码图像。在 Captcha.aspx 文件中,我生成了随机数并将随机数分配给隐藏字段。
Captcha.aspx:
<asp:hiddenField runat="server" ID="hdnCaptcha"/>
Captcha.aspx.vb:
hdnCaptcha.Value = 随机数
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;
隐藏字段验证码值总是returns null。如何从 Iframe 源页面访问隐藏字段值?
ASP.NET 在生成的 html 中生成 ID,这些 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" />
我使用 Iframe 在我的 Default.aspx 页面中加载验证码图像。在 Captcha.aspx 文件中,我生成了随机数并将随机数分配给隐藏字段。
Captcha.aspx:
<asp:hiddenField runat="server" ID="hdnCaptcha"/>
Captcha.aspx.vb:
hdnCaptcha.Value = 随机数
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;
隐藏字段验证码值总是returns null。如何从 Iframe 源页面访问隐藏字段值?
ASP.NET 在生成的 html 中生成 ID,这些 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" />