预填充 WebView 文本字段

2023-12-24

我需要预先填写文本字段UIWebView我明白javascript是解决这个问题的最好方法。不幸的是我一无所知javascript在过去的几个小时里一直在摸索,一无所获。

最新的拙劣尝试:

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    // username field id = username_5 & pw field id = password_5
    NSString *javascript = @"\
    var user = 'testUser';\
    var pw = 'testPW';\
    document.getElementById('username_5').value = user; \
    document.getElementById('password_5').value = pw; \
    ;";
    // Execute JS
    [_emailWebView stringByEvaluatingJavaScriptFromString:javascript];
}

有人能指出我正确的方向吗?

-EDIT-

我还尝试尝试延迟调用,以防页面未完全加载,并且如果我调用类似以下内容:

- (void)webViewDidFinishLoad:(UIWebView *)wv
{
    [NSObject cancelPreviousPerformRequestsWithTarget:self];
    [self performSelector:@selector(injectJavascript) withObject:nil afterDelay:1.0];
}

- (void)injectJavascript
{
    [self.emailWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('password_5').value = 'testPW';"]];
    [self.emailWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.alert('test');"]];
}

出现警报,但带有 ID 的字段password_5未填满。

相关字段嵌套在表单中。不知道这有什么区别吗?

-EDIT 2-

我很确定问题与目标网站上的 HTML/嵌套有关,因为我刚刚在另一个网站上尝试过,并且它有效。

目标站点的嵌套如下:

<html>
  <head> … </head>
    <body onload="FinishLoad(1);hideJSWarn();">
      <div id="noJSWarn" class="cssSecurityWarning" style="display: none;"> … </div>
      <table id="table_LoginPage_1" > … </table>
      <table id="table_LoginPage_2" > … </table>
      <blockquote>
        <form id="frmLogin_4" onsubmit="return Login(1)" autocomplete="off" method="POST" action="login.cgi" name="frmLogin">
          <input id="tz_offset_5" type="hidden" name="tz_offset"></input>
          <table id="table_LoginPage_3" >
            <tbody>
              <tr> … 
                <td valign="top">
                  <table id="table_LoginPage_6" >
                    <tbody>
                      <tr>
                        <td> … </td>
                        <td> 
                          <input id="username_5" type="text" size="20" name="username"></input>

您必须将 JavaScript 代码放入一个 NSString 中,然后执行stringByEvaluatingJavaScriptFromString。代码如下所示:

 [self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('email').value = '%@'", email]];
 [self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('pass').value = '%@'", password]];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

预填充 WebView 文本字段 的相关文章

随机推荐

  • 如何判断 AVAudioPlayer 已经播放完毕

    我正在开发一个使用以下方式播放声音的应用程序AVAudioPlayer 我想知道声音何时播放完毕 我想在声音停止播放时更改图像 这是我用来创建播放器的代码 NSURL url NSBundle mainBundle URLForResour
  • 显示带有键类型和引用的 MYSQL 表列

    我需要一个查询 INFORMATION SCHEMA 它将针对给定的模式和表名称向我显示具有以下属性的所有表列 它是什么键类型 PK gt 主键 UQ gt 唯一键 FK gt 外键 什么是键名称 如果是外键 则引用 schema tabl
  • 具有 ModelIO 的混合拓扑(四路/三路)

    我正在使用 ModelIO 导入一些简单的 OBJ 资源 如下所示 let mdlAsset MDLAsset url url vertexDescriptor nil bufferAllocator nil preserveTopolog
  • Windows 上的通用 ctag

    我是 ctags 新手 在阅读了有关该程序的一些信息后 我得出的结论是 Universal ctags 是最新版本 exhuberant ctags 的后继者 并且仍在积极开发中 https ctags io https ctags io
  • JAXB 编组声明的父类与实际运行时子类

    我正在使用 JAXB 来编组一个类 该类具有声明为类 Foo 的实例变量 在运行时 该实例变量被设置为 Foo 子类的实例 比如说 FooBar 类 Foo 和 FooBar 上都有基本的 JAXB 注释 XML 输出显示正在封送 Foo
  • 设置 PHP 的默认时区

    在我的网络应用程序中 我让用户从列表中选择他们喜欢的时区 其中包含PHP 支持的所有时区 http www php net manual en timezones php 这么说吧 POST timezone 是所选时区 e g Ameri
  • 如何向 topojson 文件添加属性?

    给定一个 data tsv 文件 例如 id code name 1 AL Alabama 2 AK Alaska 4 AZ Arizona 5 AR Arkansas 6 CA California 给定一个 topojson json
  • Google 脚本中的字符串以以下开头

    我正在为我们正在进行的一些选举编写数据转换脚本 第一部分将所有名称更改为大写 这部分脚本工作正常 但是 我对脚本的第二部分有疑问 有些 ID 会有 S S123456 有些则没有 S 123456 出于我的目的 我需要所有 ID 开头都没有
  • mybatis中返回HashMap,并在spring MVC中作为ModelAttribute使用

    我想使用 spring mvc modelAttribute 在 Jsp 页面中显示类别列表 在我的 mapper xml 文件中是
  • 使用 Newtonsoft 在 C# 中通过 JSON 模式验证 JSON

    使用 JSON Schema 验证 JSON 返回值始终为 true 使用Newtonsoft进行验证和测试here https www jsonschemavalidator net 与模式和数据 它总是返回 未发现错误 JSON 根据模
  • 在字符串中使用空字符 (C++)

    我正在温习 C 偶然发现了关于字符串 字符数组和空字符的奇怪行为 0 下面的代码 include
  • 有哪些优秀的 Ruby on Rails 博客? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我 6 个月前开始学习 Rails 到目前为止我很喜欢它背后的社区 有大量的论坛和文档资源可供使用 但
  • 如果流没有返回结果,Java 8 抛出异常[重复]

    这个问题在这里已经有答案了 我很好奇是否可以在以下情况下使用 orElseThrow 或者是否有更多 Java 8 方法来执行与 1 liner 相同的操作 Collection
  • 在页面关闭之前执行 JS 函数 |重定向[重复]

    这个问题在这里已经有答案了 问题 我正在使用 ASP NET Web 表单 C 我需要在页面关闭之前执行 JS 函数 无论以何种方式关闭 作为重定向或任何其他方法 额外信息 作为一些额外的信息 该函数将是到不同页面的 HTTP POST 我
  • git pull 通过 PHP exec IIS

    这是我经历过的最难诊断的问题 我似乎无法调用 exec call git pull output 该进程挂起 并且往往会导致 IIS 一起挂起 exec call git status output works fine 这是我所做的 生成
  • 如何找到 JXA 对象上的所有方法?

    我试图列出 JXA 对象的所有方法 我尝试了几种在浏览器中使用 JavaScript 的方法 但没有一个有效 gt gt Object getOwnPropertyNames Application Finder selection 0 g
  • ProgressBar Circle 在 android L (API 21) 上显示没有进度

    我有一个圆形进度条来倒计时 它在 kitkat 和之前的版本上完美运行 但在 android L 上 无论我设置什么进度 它总是显示一个完整的圆圈 Image http youspeakschwaebisch de progressbar
  • 在 XPath 中获取以下兄弟姐妹?

    我正在努力抓住li下面的类文本基于包含某个单词的树中较高的强标记 在本例中为 restaurants p class The location where the condo is situated offers a good choice
  • 使用 dlopen() 加载时解决动态库依赖关系

    我在加载动态库时遇到了问题dlopen 我尝试加载一个库 handle dlopen libmkl intel lp64 so RTLD LAZY 此代码失败并显示以下消息dlerror opt intel composer xe 2013
  • 预填充 WebView 文本字段

    我需要预先填写文本字段UIWebView我明白javascript是解决这个问题的最好方法 不幸的是我一无所知javascript在过去的几个小时里一直在摸索 一无所获 最新的拙劣尝试 void webViewDidFinishLoad U