2017-08-14 6 views
0

私はIDを持たないスパンラインからテキストを取得しようとしています。 Xcodeとスウィフト3IDなしスパンのテキストを取得

を使用すると、ここで行う:

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

私はこれを試してみましたが、それは動作しません:

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

私もちょうど.innerText.textContentouterTextが、コンソールを使用してみましたプリントName is()

+0

あなたは '[0]' document.getElementsByClassName( '名前')を試したことがありますか? –

+1

'document.querySelector( '。name')。innerHTML'は、そのコードを実行したときのそのクラスの**最初の**スパンの内容の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-代わりに)。 - [レビューから](/レビュー/低品質の投稿/ 17031356) –

0

evaluateJavaScript(_:completionHandler:)インスタンスメソッドでは、2つのパラメータが必要です。

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)") 
     } 
    } 
関連する問題