问题标签 [wkwebviewconfiguration]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1925 浏览

cordova - 以编程方式更改 WKWebView 内容大小

我将 WKWebView 子视图添加到 PhoneGap / Cordova 4.0+ 应用程序中(通过cordova-plugin-wkwebview-engine)并使用编程自动布局约束使 WKWebView 的大小与 MainViewController 的视图相同。

当我查看 WKWebView 的边界时,它与 MainViewController 视图的边界相匹配。

但是使用Javascript 来检查内容大小,特别是看起来像这样的脚本:

这返回的高度实际上约为 WKWebView 边界高度的 1/2 到 2/3(在 iPad Pro 模拟器上,我将边界高度设置为 1024.0,但 Javascript 报告的内容高度仅为 735.0)。而且我只显示了我想显示的非调整大小的 Vue.js 内容的一半。

由于我无法显示我正在使用的实际内容(NDA 很有趣!),我实际上注意到我在 PhoneGap/Cordova 中传递到 WKWebView的任何URL 都会出现问题。这是 apple.com 在我的应用程序中的样子: 底部边缘被切断

在 Mobile Safari(在模拟器中运行)中,它应该是正确大小的版本:

更多正在显示

您可以看到顶部栏项目的间距不同(在桌面上它们应该从窗口的任一侧缩进)并且底部边缘显示更多,因为 Web 视图的内部高度更高。

为了解决我的问题,我已经完成了所有工作,从将 WKWebView 实例化从viewDidLoadout 移动到viewDidAppear,还尝试“硬编码”将静态 iPad Pro 大小的帧大小传递到[WKWebView initWithFrame:],但内容大小保持在 735.0.0。在模拟器的移动版 Safari 和桌面版 Safari 中,相同的内容呈现精美(且正确)。

如何强制 WKWebView 的内容大小与父视图的边界相匹配?

如果您想在 iPad Pro 模拟器上看到这个错误,我在https://github.com/dautermann/phonegap-air有一个公共 github 存储库。请务必获取“演示问题”分支。

0 投票
1 回答
539 浏览

ios - UITextField 中的 WKWebView 自动完成建议

我正在使用 WKWebview 来显示网页并有一个 UITextField ,用户可以在其中输入他们希望导航到的 URL(各种应用内浏览器)。当用户键入时,我想显示一个可能性列表(即流行网站)。是否有任何 Apple(或第 3 方)API 可用于根据子字符串获取热门网站列表?

编辑:我需要使用 WKWebView 而不是新的 Safari 视图控制器,因为我希望能够注入自定义 javascript(前者不允许)

0 投票
0 回答
1546 浏览

javascript - 如何将数据从 WKWebView 返回到 JavaScript

我正在使用 WebViews 开发一个混合的 Android 和 iOS 应用程序。但是,我正在努力将数据从 iOS 应用程序返回到我的 Javascript。

下面是我如何设置 WebView 以从我的 JavaScript 函数接收数据。

这就是我将数据传递给应用程序的方式。

本质上,我想做的是能够从应用程序接收数据返回到我的 JavaScript 并按照以下方式做一些事情......

但我不知道如何从应用程序返回一些东西。我是斯威夫特的新手。然而,对于 Android 开发人员来说,它可以像向我的函数添加返回类型一样简单,但这不适用于 Swift。

0 投票
3 回答
5076 浏览

javascript - 将 iOS 中被调用函数的结果返回给 JavaScript 中 WkWebView 中的调用函数

我们从 javascript 调用 iOS 中的一个函数,即

我想在 iOS 中调用方法的数据变量中分配返回值。

iOS 代码:

有人可以告诉我该怎么做吗?

我知道我可以使用evaluateJavascript来回调另一种方法,但由于某些限制,我必须从同一方法返回结果。

0 投票
1 回答
580 浏览

swift - 将信息从 Angular4 (WKWebView) 传递给 Swift

嗨,我有一个网络应用程序,我将其包装到 WKWebView 中,以便通过 Google Play 和 App Store 分发。

为了让这项工作以我想要的方式工作,我需要能够在 Angular 和 Swift 之间传递一些文本字符串。

这是来自 Angular -> Swift 的信息传递,这是我现在要解决的最重要的一步,我花了几天时间在谷歌上搜索可能的解决方案,但关于 Angular 的文章并不多。

我发现一些在代码语法方面似乎有些过时的文章,但大多数文章都涉及将信息从 JavaScript 传递到 Swift,而不是 TypeScript/Angular4 到 Swift。

我对此的最佳用例是,当用户在 WKWebView 的登录表单中输入他的电子邮件地址时,我需要在 Swift 中检索该电子邮件以获取正在登录的用户,并且将该电子邮件地址映射到设备登录的 Firebase 注册令牌(以提供推送消息)。

有人对此有解决方案吗?例如,我将如何在 Web 应用程序中检索以下表单中输入的文本;

编辑:我不认为这个问题是重复的,因为“window.webkit.messageHandler”函数在尝试在 Angular/TypeScript 中实现它时会在编译时提供错误。一旦我的开发人员可以将其邮寄给我,我将提供示例代码和编译错误输出。

0 投票
1 回答
849 浏览

ios - WKWebView 中的 iOS Objective-C LocalStore

我发现这个 SO解释了如何使用 javascript 设置本地存储。

我正在尝试将它从 Swift 翻译成 Objective-C。出于某种原因,它让我很不舒服,就像我错过了一个支架,但我似乎无法弄清楚。任何想法如何正确地将 Swift 转换为 iOS?

这是我到目前为止所拥有的:

0 投票
2 回答
6956 浏览

swift - 与 WKProcessPool 共享 cookie 用于 Swift 中的 WKWebView

谁能告诉我如何在 Swift 中创建 WKProcessPool ?我不熟悉Objective-C。我必须创建一个 WKProcessPool 才能与所有 WKWebViews 共享 cookie。即使显示另一个具有相同类的视图控制器,我也想保留 cookie。我尝试了以下但它不工作。

0 投票
1 回答
4036 浏览

swift - 如何在 WKWebView 中禁用 YouTube 视频的自动播放?

我有简单的 ViewController 和 WKWebView 配置如下:

但是在加载带有 YouTube 视频的网页后,它立即开始自动播放(并同时切换到全屏),无需任何用户交互。如何禁用自动播放?

0 投票
1 回答
7769 浏览

ios9 - mediaPlaybackRequiresUserAction 已弃用和 iOS 9

WKWebView 配置

WKWebView 配置

所以这是我的问题:

iOS 9已mediaPlaybackRequiresUserAction弃用,mediaTypesRequiringUserActionForPlayback仅适用于 iOS 10+,我可以在 iOS 9 中使用什么?

0 投票
1 回答
1178 浏览

swift - 在其他类中使用相同的 WKWebView

嗨,我目前在我的 Swift 3 项目中使用 WKWebView。是否可以在另一个类中保留相同的 WKWebView,以便您在不同的类中运行一个主 WKWebView?

我尝试使用 WKProcessPool 和 WKWebsiteDataStorage 来执行此操作,但是当我在另一个类中设置新的 WKWebView 时,我不知道如何引用现有配置/登录 wkwebview。

我已经在互联网上查看了所有内容,但找不到解决方案。我希望您了解我的问题并知道解决方案。提前致谢!!