swift - 无法使用 swift 在 safari 浏览器本地存储中存储值

标签 swift safari wkwebview

我正在使用 WebKit 将电子邮件存储在 safari 浏览器本地存储中。但是,我得到一个错误

thread 3: Fatal error: Unexpectedly found nil while unwrapping an Optional value

在 localstorage 中存储值的一种方法是使用 UserDefaults,但这种方法不会将值存储在 safari 本地存储中,因此我使用了以下方法

import SafariServices
import WebKit

class SafariExtensionViewController: SFSafariExtensionViewController {
    @IBOutlet weak var webView: WKWebView!
    static let shared = SafariExtensionViewController()
    override func viewDidLoad() {
        self.preferredContentSize = NSSize(width: 300, height: 250)
        message.stringValue = ""
        emailMessage.stringValue = ""
        passwordMessage.stringValue = ""
    }
    @IBAction func userLogin(_ sender: Any) {
     let providedEmailAddress = email.stringValue
      self.webView.evaluateJavaScript("localStorage.setItem(\"email\", \"value\")") { (result, error) in

         self.webView.reload()                           
     }
    }
}

我的问题是,如何从 swift 将值存储在 safari 浏览器本地存储中,以便我也可以从 javascript 访问它。

最佳答案

您没有从 Storyboard 连接 webView socket (标记为 Implicitly Unwrapped Optional ),所以出现此错误。

您可以使用 CoreData , UserDefaults , FileManager , 甚至简单 SQLite存储你想要的东西。

编辑:

A Safari app extension可以读取和修改您的网页内容。它还允许您在浏览器中访问数据。

完成以下步骤制作 Safari App Extension:

  1. Build a Safari App Extension
  2. Inject a script into a webpage
  3. Pass message between your Safari app extension and injected script

关于swift - 无法使用 swift 在 safari 浏览器本地存储中存储值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52176935/

相关文章:

swift euc-kr 韩语编码不起作用。但可以在 python 中使用

html - css浏览器windows safari和mac safari问题

iphone - iPad 上的 HTML5 视频播放器

ember.js - Ember 升级破坏了一项测试,而且仅限于 Safari

javascript - 屏幕旋转时 WKWebView CSS 渲染问题

javascript - WKWebView - 防止用户文本选择触发的自动滚动

ios - 隐藏 View 并相应地重新定位其他 View

ios - UICollectionViewCell 没有填满 Swift 3 中的整个屏幕

ios - 如何从 textFieldDidEndEditing 访问自定义 UITableViewCell?

ios - WKWebView嵌入视频释放后一直播放声音