UIWebView 无法将 JavaScript 作为 document.getElementById 运行,返回 nu
UIWebView unable to run JavaScript as document.getElementById returns null
我目前正在尝试在我的webView中运行一些JS,以简单地填写第三方网站上的一些文本字段。到目前为止,这在其他网站上取得了成功,但我似乎遇到了特定 url 的问题。
let loadFirstNameJS = "var inputFields = document.getElementById('Field1'); inputFields.value = ''(firstName)';"
self.webView.stringByEvaluatingJavaScriptFromString(loadFirstNameJS)
执行 JS 以输入字符串值(firstName)以前很简单。但是我似乎无法访问元素"Field1",因为它看起来好像不存在?(返回空值)即使我能够在浏览器中查看和编辑。
我的理解是,在页面完全加载之前,UIWebView 不会原谅任何 JS,因此假设在创建元素之前尝试访问元素不会成为问题。
这是我正在尝试编辑的特定字段 1 的 html。
<li id="fo134li1" class="notranslate leftHalf ">
<label class="desc" id="title1" for="Field1">
First Name
<span id="req_1" class="req">*</span>
</label>
<div>
<input id="Field1" name="Field1" type="text" class="field text medium" value="" maxlength="255" tabindex="2" onkeyup="handleInput(this); " onchange="handleInput(this);" required="">
</div>
</li>
这是我在项目完成之前需要解决的最后一件事,所以任何关于为什么这不起作用的帮助将不胜感激!
谢谢!
你应该真正跟踪页面加载,而不是运行javascript,直到你看到页面完成加载。您可能执行得太快了。
您可以通过实现来检测负载的开始
- (void)webViewDidStartLoad:(UIWebView *)webView
并通过实施来检测结束
- (void)webViewDidFinishLoad:(UIWebView *)webView
或通过实施来检测错误
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
您需要跟踪开始和结束的加载次数,因为某些页面可以加载其他页面。当所有页面都完成后,运行你的javascript。
相关文章:
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 使用压缩的JavaScript文件(不是运行时压缩)
- Javascript运行php文件,然后下载文件
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- Angularjs代码未在匿名函数中运行
- jquery设置为使用参数运行
- 如何根据时间运行不同的脚本
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 将文本框链接到由按钮运行的javascript公式
- 为什么不是't运行此Javascript的Chrome
- ng应用程序使脚本无限运行
- 如何在运行时在angular 2中加载外部js脚本
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- JavaScript错误:Microsoft JScript运行时错误:应为对象
- 在终端中运行 JavaScript 时(使用 rhino),如何使用 print() 函数在一行中打印
- 如何使用JS/nightwatchjs并行运行多个测试
- 茉莉花宝石-耙茉莉花:ci dons't运行测试
- 我的HTML按钮没有在Javascript中运行
- 使用JS在服务器上运行PHP脚本