2017-04-04 8 views
0

Swift 3.0を使用してiOSアプリケーションでAmazon Mobile Addを実行しようとしています。ファイルが正常に読み込まれます。私はWebViewでgoogleのURL(コードは以下のコメント)を実行することができます。私はjavaScriptの実行方法を理解していません。私はチュートリアルを読んできましたが、WebViewでネイティブにスクリプトを実行するものはありません。私はwebView.stringByEvaluatingJavaScriptとcontext.evaluateScriptを試しましたが、WebViewにはスクリプト出力ではなく "Amazon Ad"しかありません。SwiftのUIWebViewでjavaScriptを実行

私の質問は、WebViewやその他のビューで最も単純な方法でJavaScriptを実行するにはどうすればよいですか。 xxxxxは "編集された"ユーザーキーです。

<!DOCTYPE html> 
<html> 
<body> 

<h1>Amazon Ad</h1> 

<script type="text/javascript"> 
amzn_assoc_placement = "xxxxxx"; 
amzn_assoc_search_bar = "true"; 
amzn_assoc_tracking_id = "xxxxxx"; 
amzn_assoc_search_bar_position = "bottom"; 
amzn_assoc_ad_mode = "search"; 
amzn_assoc_ad_type = "smart"; 
amzn_assoc_marketplace = "amazon"; 
amzn_assoc_region = "US"; 
amzn_assoc_title = "Star Wars Black Series 6\""; 
amzn_assoc_default_search_phrase = "Star Wars Black Series 6 Inch"; 
amzn_assoc_default_category = "All"; 
amzn_assoc_linkid = "xxxxxxx"; 
</script> 
<script src="//z-na.amazon-adsystem.com/widgets/onejs?MarketPlace=US"></script> 

</body> 
</html> 

ここはUIWebViewを持つUIViewControllerです。私は、私はあなたがあなたのファイルが内部のjavascriptとhtmlですので、それは、htmlの値をロードする必要があることwebviewに伝える必要があると考えて、次の、

webView.stringByEvaluatingJavaScript(from: common), 
webView.loadHTMLString(common, baseURL: Bundle.main.bundleURL) 

コード

import UIKit 
import JavaScriptCore 

class AmazonFullAdViewController: UIViewController, UIWebViewDelegate { 

@IBOutlet weak var webView: UIWebView! 

var url = URL(string: "https://google.com") 

override func viewDidLoad() { 
    super.viewDidLoad() 

    webView.delegate = self 

    // 1 
    guard let commonJSPath = Bundle.main.path(forResource: "common", ofType: "js") else { 
     //commonJSPath = Bundle.main.path(forResource: "Series", ofType: "txt") else { 
      print("Unable to read resource files.") 
      return 
    } 

    // 2 
    do { 
     let common = try String(contentsOfFile: commonJSPath, encoding: String.Encoding.utf8) 
     _ = context?.evaluateScript(common) 
     // webView.stringByEvaluatingJavaScript(from: common) 
     webView.loadHTMLString(common, baseURL: Bundle.main.bundleURL) 
    } catch (let error) { 
     print("Error while processing script file: \(error)") 
    } 

    //load initial URL 
//  let req = URLRequest(url : url!) 
//  webView.scalesPageToFit = true 
//  webView.contentMode = .scaleAspectFit 
//  webView.loadRequest(req) 
} 
} 

答えて

0

の両方を試してみました。

self.webview.loadHTMLString(yourfile)

+0

私はタグ内のJavaScriptコードを包ん。ブラウザでhtmlを実行すると、接続して正常に動作します。 webView.loadHTMLString(共通、baseURL:Bundle.main.bundleURL)を使用すると、Webビューでレンダリングするものがありません。コードがデリゲートを呼び出す - func webViewDidFinishLoad – Jacksonsox

関連する問題