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