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

标签 javascript asp.net vb.net iframe captcha

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

验证码.aspx:

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

验证码.aspx.vb:

hdnCaptcha.Value = 随机数

默认.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源页面访问隐藏字段值?

最佳答案

ASP.NET 在生成的 html 中生成 ID,这些 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" />
    

关于javascript - 使用javascript访问iframe内的asp.net隐藏字段控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33109319/

相关文章:

javascript - highchart donut - 通过从 userService 搜索,单击切片打开页面

jquery - 从 JavaScript 调用 CustomValidator 验证

vb.net - Visual Basic .net 中的数组列表

javascript - 如何使用map将数据从reactJs上的组件传递到另一个组件?

javascript - Javascript 中 reduce 方法的奇怪行为

javascript - 带有 Webpack 的 Typescript 中的环境变量

javascript - 如何在 Iframe 中显示 aspx 站点

c# - 每次使用 "Not Allowed"使用 ASP Identity 登录失败(即使 'email' 和 'username' 具有相同的值))

.net - 检查套接字是否在紧凑框架中连接

mysql - 从另一表的列中减去一列的总和