【问题标题】:getElementById returns null even after page is loaded - WkWebView and Swift即使在页面加载后 getElementById 也会返回 null - WkWebView 和 Swift
【发布时间】:2018-03-12 21:21:24
【问题描述】:

加载此网址后,我想在 ID 为“用户名”的 WKWebView 的特定元素中输入文本:https://app.oncoursesystems.com/homeworkportal/index/brrsd webview 中的用户名字段应该填充我指定的任何值,但是每当我运行我的代码时,我都会收到此错误:

错误:可选(错误域=WKErrorDomain 代码=4“发生 JavaScript 异常”UserInfo={WKJavaScriptExceptionLineNumber=1,WKJavaScriptExceptionMessage=TypeError:null 不是对象(评估 'document.getElementById("Username").value= 'xxx''), WKJavaScriptExceptionColumnNumber=52, WKJavaScriptExceptionSourceURL=https://app.oncoursesystems.com/homeworkportal/index/brrsd, NSLocalizedDescription=发生 JavaScript 异常})

我尝试在 func webView: didFinishNavigation: 方法下运行我的代码(使用 WKNavigationDelegate),但我得到了同样的错误

这是我的代码(这些都是为了得到相同的结果而进行的不同尝试):

let js = "var myelement = document.getElementById(\"Username\").value='xxx'; myelement.innerHTML= \"New Text\";"
    webView.evaluateJavaScript(js, completionHandler: nil)

webView.evaluateJavaScript("document.getElementById('Username').value='xxx'", completionHandler: nil)

webView.evaluateJavaScript("window.onload = function() { alert(document.getElementById('Username').value='xxx');};", nil)

//I got this error instead for the last one: Error: Optional(Error Domain=WKErrorDomain Code=5 "JavaScript execution returned a result of an unsupported type" UserInfo={NSLocalizedDescription=JavaScript execution returned a result of an unsupported type})

我在 viewDidLoad、webView:didFinishNavigation:(以确保 html 已加载)和单击按钮上尝试了所有这些

如何才能成功地使用值“xxx”填写表单的用户名字段?这是由链接本身的问题引起的还是我的代码有问题?

【问题讨论】:

  • 你能确定网页中存在Username字段吗?

标签: javascript swift wkwebview


【解决方案1】:

根据提供的链接,Username 字段存在于 iFrame 中,这就是 document.getElementById('Username') 返回 null 的原因。

试试这个

document.getElementById('frame').contentWindow.document.getElementById('Username') 

【讨论】:

    猜你喜欢
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 2017-03-20
    相关资源
    最近更新 更多