【问题标题】:Swift: Print Html title of WebView using Swift And JavaScriptCoreSwift:使用 Swift 和 JavaScriptCore 打印 WebView 的 Html 标题
【发布时间】:2016-05-28 05:29:25
【问题描述】:

我的 Xcode 项目中有这个 .html 数据:

我正在尝试使用这两行来读取标题值:

document.title 
document.getElementsByTagName(\"title\")[0].innerHTML; 

但它只打印:

结果是:未定义

import UIKit
import JavaScriptCore
class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view, typically from a nib.
    let myWebView:UIWebView = UIWebView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height))
    let localfilePath = NSBundle.mainBundle().URLForResource("home", withExtension: "html");
    let myRequest = NSURLRequest(URL: localfilePath!);
    myWebView.loadRequest(myRequest);

    //let jsSource = "var testFunct = function(message) { return document.title;}"
    let jsSource = "var testFunct = function(message) { return document.getElementsByTagName(\"title\")[0].innerHTML;}"

    let context = JSContext()
    context.evaluateScript(jsSource)
    let testFunction = context.objectForKeyedSubscript("testFunct")
    let result = testFunction.callWithArguments(["the message"])
    print("result is: \(result)")

    self.view.addSubview(myWebView)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

【问题讨论】:

    标签: javascript swift webkit javascriptcore


    【解决方案1】:

    不要将 UIWebView 用于针对 iOS 8 及更高版本的新代码,请改用WKWebView。 Apple 在UIWebView Documentation 上有这样的说法:

    在 iOS 8 及更高版本中运行的应用程序中,使用 WKWebView 类而不是使用 UIWebView。此外,如果您呈现不应运行 JavaScript 的文件,请考虑将 WKPreferences 属性 javaScriptEnabled 设置为 NO。

    以下是使用 WKWebView 评估 Javascript 的方法:

    self.webView.evaluateJavaScript("document.title") { result, error in
        print(result!)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多