2017-08-14 89 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)") 
     } 
    }