2017-10-10 13 views
0

Xcode 9.0とiOS 11を使用しています。ユーザーがリンクをタップするとJavaScriptコードを実行しようとしています。 jsコードはWKWebView内のローカルHTML Webサイトに埋め込まれています。 webView.evaluateJavaScript("document.getElementsByClassName('panel-title').innerText")のような多くの提案を試してみましたか、webviewに異なる設定をしました。 HTMLのサイトは、ユーザーが拡張し、それはこのようになります異なるセクションWKWebViewのローカルWebサイトでjavascriptアクションを呼び出す

を折りたたむことができます個人情報保護方針が含まれています

<main class="container"> 
     <div> 
     <h1 id="datenschutzwbrerklrung">Datenschutz<wbr>erklärung</h1> 
      <p>Allgemein</p></div> 
      <div class="panel panel-default"><div class="panel-heading" role="tab" id="headingsection1" data-toggle="collapse" data-parent="#accordion" href="#section1"> 
       <h4 class="panel-title">Allgemeiner Hinweis</h4></div><div id="section1" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingsection1"><div class="panel-body"> 
       <p>Es ist uns ein ganz besonderes Anliegen, dass sich alle Nutzer unserer App wohl und sicher fühlen. Aus diesem Grund ist uns der Schutz Ihrer personenbezogenen Daten von höchster Wichtigkeit. 
        Bei der Erhebung, Verarbeitung und Nutzung halten wir uns selbstverständlich streng an die gesetzlichen Bestimmungen des Bundesdatenschutzgesetzes (BDSG) und des Telemediengesetzes (TMG). 
        Wir verarbeiten personenbezogene Daten zur Auftragsabwicklung. Bei berechtigtem Interesse rufen wir zum Zweck der eigenen Kreditprüfung ggf. Bonitätsinformationen von Auskunfteien ab.</p></div></div></div> 

      <br /> 

ので、ユーザが「Allgemeinerメモ」をクリックしたとき。以下のテキストが展開されます。これはMacのSafariで機能しています(JavaScriptを有効にする必要があります)。しかし、私のWKWebViewでは動作しません。 私の現在のWKWebViewの構成は次のようになります。

var webView: WKWebView! 

    override func loadView() { 
     super.loadView() 

     let contentController = WKUserContentController() 
     let config = WKWebViewConfiguration() 

     config.preferences.javaScriptEnabled = true 
     config.preferences.javaScriptCanOpenWindowsAutomatically = true 
     config.selectionGranularity = .character 
     config.userContentController = contentController 

     webView = WKWebView() 
     webView.navigationDelegate = self 

     self.webView.customUserAgent = "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136" 
     view = webView 

    } 

私はまた、次のデリゲートメソッドを使用します。最初のif条件は常にfalseです。 2番目のif文ではエラーとなり、結果はnilです。

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { 
     print("delegate") 

     webView.evaluateJavaScript("document.getElementsByClassName('panel-title').innerText") { (result, error) in 
      if error != nil { 
       print(result ?? "nix") 
      } 
      else { 
       print("Error: \(String(describing: error))") 
      } 
     } 
     webView.evaluateJavaScript("document.getElementsByClassName('panel-title')") { (result, error) in 
     if error != nil { 
      print("The result is: \(result ?? "nil")") 
      print("resut error: \(error!)") 
      } 
     else { 
      print("The Error: \(String(describing: error))") 
      } 

     } 

まだ何かが欠落していると確信しています。 何か助けていただければ幸いです。

+0

3000行以上のコードがあるので、JavaScriptの部分全体を投稿することはできません。いくつかのクエリが含まれているようです。たぶん誰かが私にこの仕事をする方法の一般的なヒントを与えることができます – user1895268

答えて

0

カスタムユーザーエージェントのプロパティをWKWebViewに設定してみてください。

のObjective C

[self.webView setCustomUserAgent:@"Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136"]; 

スウィフト

self.webView.customUserAgent = "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136" 

・ホープ、このことができます。

+0

あなたの答えをありがとうが、これは私の問題を解決しませんでした。今度は私のコードに次の行を追加しました。 'config.preferences.javaScriptEnabled = true'でも効果はありません。なぜ私は知りません – user1895268

+0

WKWebViewの定義方法を示すために質問を編集してください。 – George

+0

WKWebView(中間コード部分)の定義と定義を編集しました – user1895268

関連する問題