如何在 UIWebView 加载其初始请求之前设置本地存储?

2023-12-09

视图控制器

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let wv = UIWebView(frame: UIScreen.main.bounds)
        wv.stringByEvaluatingJavaScript(from: "localStorage.setItem('key', 'value')")
        wv.loadRequest(URLRequest(url: URL(string: "http://localhost:63343/test.html")!))
        self.view.addSubview(wv)
        // Do any additional setup after loading the view, typically from a nib.
    }
}

测试.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        alert(localStorage.getItem("key"))
    </script>
</head>
<body>
</body>
</html>

我打了电话localStorage.setItem('key', 'value') before loadRequest。我希望警报会输出value,但它输出了null:

enter image description here

所以我的问题是:

在之前设置本地存储的正确方法是什么UIWebView加载其初始请求?

EDIT:

感谢 @Wez 指出我应该评估 JavaScriptwebViewDidFinishLoad,但我想做的是在加载该页面之前设置 localStorage(我们将在其初始请求中使用该 localStorage)。所以我无法在 webViewDidFinishLoad 中评估它...

有什么办法可以实现这一点吗?


如果您正在寻找Swift版本:

let configuration = WKWebViewConfiguration()
let contentController = WKUserContentController()
let js = "javascript: localStorage.setItem('key', 'value')"
let userScript = WKUserScript(source: js, injectionTime: WKUserScriptInjectionTime.atDocumentStart, forMainFrameOnly: false)
contentController.addUserScript(userScript)
configuration.userContentController = contentController

let webview = WKWebView(configuration: configuration)
webview.load(URLRequest(url: URL(string: "your URL")))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 UIWebView 加载其初始请求之前设置本地存储? 的相关文章

  • Swift 协议扩展实现另一个具有共享关联类型的协议

    考虑以下 protocol Foo typealias A func hello gt A protocol FooBar Foo func hi gt A extension FooBar func hello gt A return h
  • 在 Android webview 中禁用地址栏

    如何从 WebView 中禁用和隐藏地址栏 没有地址栏WebView 如果你认为你有一个WebView 然后您看到一个地址栏 那不是您的WebView 相反 您正在查看浏览器应用程序 最有可能的是 您告诉的 URLWebView加载进行了重
  • Swift SpriteKit edgeLoopF​​romRect 问题

    下面的代码可以识别底部和顶部边缘场景和球按预期弹开 但是 那左边缘和右边缘现场的情况一直被破坏 如果施加足够的力 球会离开屏幕 然后最终返回 就好像场景的边缘超出了 iPhone 模拟器窗口的边缘 import SpriteKit clas
  • 将自定义数据包含到 iOS 故障转储中

    你好 堆栈溢出 有一个简单的问题要问您 当我的应用程序在用户的设备上崩溃时 是否可以将自定义错误数据嵌入到自动生成的 iOS 故障转储中 例如 我的 SQlite 数据库由于某种原因无法运行 例如 数据库文件已损坏 我无法从这个错误中恢复
  • 检查 WebView 元素时的 UiAutomator 错误

    I have recently started automation testing in android and was using UiAutomator tool for inspecting UI elements Surprisi
  • 错误域=kAFAssistantErrorDomain 代码=209“(空)”

    我面临着一个问题SFSpeechRecognizer 启动应用程序几秒钟后 我开始收到错误消息 错误域 kAFAssistantErrorDomain 代码 209 空 和 错误 域 kAFAssistantErrorDomain 代码 2
  • 每 24 小时触发一次方法

    我正在尝试每天在给定时间触发一个方法 我尝试了一些方法 但我无法真正使其发挥作用 任何意见 将不胜感激 此外 如果无论应用程序是否打开它都会触发 那就更理想了 这可能吗 UI本地通知 http developer apple com lib
  • 从按钮执行 Segue 时应用程序冻结

    我的故事板中有一个按钮 它呈现一个带有模式序列的视图控制器 每次按下此按钮时 应用程序都会冻结 没有崩溃 也没有错误消息 prepareForSegue被调用 所有应该存在的视图控制器都在代码中prepareForSegue 但它们不会出现
  • iOS:生成pdf时绘制文本时如何设置字体?

    我在ios应用程序中使用drawpdf函数生成pdf 同时调用nsobject类中的drawtext函数 它根据我指定的框架和字符串清楚地绘制文本 我的代码是 void drawText NSString textToDraw inFram
  • 从命令行添加 Xcode 开发者帐户

    我正在尝试使用xcodebuild allowProvisioningUpdates在我只能通过命令行访问的计算机 Azure Devops macOS 托管计算机 上 不幸的是 根据man xcodebuild为了使用 allowProv
  • AVAssetExportSession 无法导出从 iCloud 下载的视频

    我正在尝试创建从用户相册中选择的视频的缩小版本 输出的最大尺寸为 720p 因此 在检索视频时 我使用 mediumQualityFormat as the deliveryMode 如果用户设备中不存在原始视频或其中等质量版本 这会导致
  • UItextView 背景颜色 Linespacing 区域太

    我正在尝试在 UITextView 中复制文本突出显示 不是搜索文本突出显示 但我也被行间距的颜色所困扰 我该如何纠正这个问题 现在的情况 期望的结果 我已将以下属性添加到我的 UiTextview 的属性文本中 对于段落行间距 我使用了以
  • 在 UIWebView 中播放 Facebook 视频

    有谁知道如何在 Facebook 上播放视频UIWebView 我的应用程序将视频上 传到 Facebook 并检索视频的网址 我想将此网址嵌入到UIWebView播放 我已经为 youtube 解决了这个问题 但没有为 Facebook
  • TableViewController 的 viewDidLoad 未触发

    我一直在关注这个tutorial http www appcoda com ios programming sidebar navigation menu 有一个滑出式菜单 我添加了一个 TableViewController 它将显示文章
  • 使用 MapKit 的地形和卫星视图

    我是 Mapkit View 的新手 当我给出没有目的地的纬度和经度时 我想显示 MapKit中是否可以通过地形 卫星视图来显示地图 有教程链接吗 我看过一些访问 Google 地图 API html 文件 的示例 有必要吗 或者您可以通过
  • 当直接从 usdz 文件而不是 Reality Composer 文件加载模型时,如何在 RealityKit 中渲染阴影?

    将模型直接从 usdz 文件添加到场景锚点时 模型下方不会出现接地阴影 如果您将模型导入 RealityComposer 并添加 RealityComposer 场景 则会出现这些 但是 您可以在不使用 RC 的情况下启用接地阴影吗 我尝试
  • 如何更改 SwiftUI 列表中分隔符的颜色?

    我在 SwiftUI 中创建了一个列表 我想更改颜色或删除分隔符 因为在 UIKit 中 我们可以轻松更改 TableView 中分隔符的颜色 下面是 SwiftUI 中列表的代码和 UI 图片 State private var user
  • 在 Swift 中从 Parse 加载图像

    我成功地将数据从 Parse 提取到 swift 中 但我的图像似乎没有按照我的方式工作 在我的 cellForRowAtIndexPath 方法中 我执行以下操作 var event AnyObject eventContainerArr
  • CoreBluetooth:检测设备超出范围/连接超时

    我正在设计一个 iOS 框架来处理多个 BLE 设备 均为同一类型 目前一切都运行良好 除了一件事 客户想要一个包含可用设备的列表 但是 我如何检测过去发现的设备何时不再可用 当我尝试连接到不再可用的设备时 会出现另一个问题 文档说 连接尝
  • ios - 如何声明静态变量? [复制]

    这个问题在这里已经有答案了 C 中声明的静态变量如下 private const string Host http 80dfgf7c22634nbbfb82339d46 cloudapp net private const string S

随机推荐

  • 如何在Android中集成Azure媒体播放器

    我有一个必须播放的清单流媒体网址 如何在android中集成azure媒体播放器来播放流视频 我找到了另一种解决方法来播放清单网址 只需连接即可 format m3u8 aapl v3 在网址末尾 您可以使用任何视频播放器播放此网址
  • 类型转换和初始化,在 Swift 中哪个更好?

    由于Swift对类型做了严格的检查 有时我们需要在NSString和String NSArray和 AnyObject 等之间进行转换 但实际上有两种不同的方法可以做到这一点 类型转换 例如str as String 初始化 比如Strin
  • 在 Angular 中取消提交表单

    我需要一个表格才能两者兼而有之 dirty并不是 submitted为了我的验证工作 我正在尝试通过 CSS 使用 ng invalid ng dirty and ng submitted由 Angular 动态添加的类 这意味着我不能简单
  • 为什么 pynput 不检测数字键盘按下?

    我在 Windows 7 上使用 python 3 7 有没有办法检测 pynput 模块中的数字 例如 1 按键 我尝试了很多其他模块 但除了 tkinter 之外我什么也没得到 它需要一个窗户 但我不想要那个 from pynput i
  • 将日期插入数据库 Postgres JDBC

    我是 Java 新手 也是 Postgres 新手 我有一个关于餐厅的小项目 我有一个像这样的 struk eng bill 表 我有一种方法可以将信息插入到该表中 如下所示 public int insertBill int id kar
  • Set-Content 在我的文件末尾附加一个换行符(换行符、CRLF)

    我的原始配置文件 web1 config 没有多余的行 在记事本中查看 显示所有字符 时看起来如下
  • xcodebuild 期间 RestKit/RestKit.h' 文件未找到错误

    我正在尝试使用 Jenkins CI 自动构建一个使用 Restkit 的 iOS 项目 显然 restkit 作为主项目中的一个项目驻留在其中 并且该项目使用 XCode IDE 成功构建 但是当我使用 xcodebuild jenkin
  • Docker 构建:无法获取档案

    我在 Windows 机器上使用 docker 工具箱 我正在尝试从 github 构建这个项目https github com pyannote pyannote video 当我通过运行构建图像时docker build t pyann
  • jQuery/Ajax 请求被发送两次

    我一遍又一遍地扫描我的代码 但似乎找不到问题 当我点击链接时 add user btn文件actions php被调用两次 因此 PHP 脚本被执行两次 这是脚本 我想它与ajax请求前面的javascript有关 function add
  • 抓住模式下方的六条线

    我有这些重复的台词 FINAL RESULTS NSTEP ENERGY RMS GMAX NAME NUMBER 1000 4 7910E 01 2 1328E 01 9 4193E 01 C 62 最终结果表示一组值的平均值 输出文件合
  • Windows $env:path ="$($env:path);。"它是在哪里添加的?

    我通过运行 解决 了一个问题 env path env path 来自 PowerShell 显然它将当前目录添加到我的路径中 请问它添加到哪个路径变量 在我的环境变量对话框中 我会在哪里看到它被添加 用户变量 系统变量 我很困惑 因为我已
  • 如何使用递归构建螺旋方阵?

    我想使用递归构建一个螺旋方阵 我可以使用迭代方法构建螺旋方阵 如下所示 void main int initial direction UP n MAX p 1 intial direction is set to UP because w
  • 使用 JavaScript 写入 HTML 时出现换行问题

    我在用着常规文本框作为用户写评论的文本输入 然后我使用 JQuery 和 JSON 将数据发送到服务器 然后将其插入数据库 当我想显示此文本时 我使用 jQuery 下载它并准备 HTML 并将其显示在浏览器中 但没有新行 如何保留用户输入
  • Grails:启动应用程序而不连接到数据库

    我在 grails 中有一个应用程序 我可以更改欢迎页面中的参数 包括数据库配置 服务器 用户名等 我从数据源外部化了数据库配置 以便我可以更改它 我想做的是能够在不配置任何数据库的情况下启动应用程序 这样我就可以在欢迎页面中配置它 这对于
  • 如何将应用内购买功能添加到我的 flutter 应用程序中?

    我打算向我的 flutter 应用程序添加应用程序内购买功能 但找不到任何有关应用程序内购买的相关信息或示例应用程序 任何人都可以分享包含应用程序内购买功能的任何链接或示例应用程序吗 谢谢 看看这个包 https pub dev packa
  • 删除字符串中的所有空格

    vb net 中是否有任何函数可以删除字符串中的所有空格 我的意思是像 这是什么 这样的字符串应该是 Whatisthis 谢谢 富尔坎 Use 字符串替换 Dim s As String What is this s s Replace
  • 即使从日历中选择日期后,如何保持 mat-datepicker 日历打开?

    我想保留mat datepicker在特定的 div 中打开 我用了opened true属性 但在选择日期后就会关闭 这应该适合你 将其添加到您的input click openCalendar picker keepOpen 这给你的m
  • Angular Proxy.Conf.Json 不适用于多个 api

    我有以下 proxy conf json 日志行和 api 调用 first api target first api secure false logLevel debug second api target second api sec
  • 通过 JavaScript 分配时 CSS 过渡不起作用

    我在尝试通过 JavaScript 将 CSS3 转换应用到幻灯片时遇到了一些令人头疼的问题 基本上 JavaScript 会获取幻灯片中的所有幻灯片 并将 CSS 类应用到正确的元素以提供漂亮的动画效果 如果没有 CSS3 过渡支持 它将
  • 如何在 UIWebView 加载其初始请求之前设置本地存储?

    视图控制器 import UIKit class ViewController UIViewController override func viewDidLoad super viewDidLoad let wv UIWebView fr