2017-08-14 48 views
0

我试图从一个跨度行中没有一个ID一段文本。使用Xcode和斯威夫特3.获取文本的跨度没有ID

这里的行:

<span class="name">Peter Red</span> 

我试过,但它不工作:

var name = webView.evaluateJavaScript("document.querySelector('.name').innerHTML") 
     print("Name is \(name)") 

我使用.innerText.textContentouterText也试过,但控制台只打印Name is()

+0

您是否尝试过'document.getElementsByClassName( '名')[0]'? –

+1

'document.querySelector('。name')。innerHTML'正确的用于在运行该代码时访问该类的第一个** span内容的HTML。所以问题是元素不存在,或者没有那个类,就像代码运行时一样。 (或者你在滥用'evaluateJavaScript';我对此毫不知情。) –

+0

@ YuvalBen-Arie:为什么这会有什么不同?首先,'getElementsByClassName'比'querySelector'具有更差的支持。但WebKit浏览器肯定有'querySelector'。 –

回答

-2

请尝试以下代码:

document.getElementsByClassName('name')[0].textContent 
+0

这不提供问题的答案。一旦你有足够的[声誉](https://stackoverflow.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/17031356) –

0

evaluateJavaScript(_:completionHandler:)实例方法需要两个参数。

func evaluateJavaScript(_ javaScriptString: String, 
     completionHandler: ((Any?, Error?) -> Void)? = nil) 

你缺少completionHandler,一旦脚本执行完成或失败将运行。

尝试以下操作:

webView.evaluateJavaScript("document.querySelector('.name').innerHTML") { (name, error) in 
     if error == nil { 
      print("Name is \(name)") 
     } 
    }