问题标签 [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.
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 实例化从viewDidLoad
out 移动到viewDidAppear
,还尝试“硬编码”将静态 iPad Pro 大小的帧大小传递到[WKWebView initWithFrame:]
,但内容大小保持在 735.0.0。在模拟器的移动版 Safari 和桌面版 Safari 中,相同的内容呈现精美(且正确)。
如何强制 WKWebView 的内容大小与父视图的边界相匹配?
如果您想在 iPad Pro 模拟器上看到这个错误,我在https://github.com/dautermann/phonegap-air有一个公共 github 存储库。请务必获取“演示问题”分支。
ios - UITextField 中的 WKWebView 自动完成建议
我正在使用 WKWebview 来显示网页并有一个 UITextField ,用户可以在其中输入他们希望导航到的 URL(各种应用内浏览器)。当用户键入时,我想显示一个可能性列表(即流行网站)。是否有任何 Apple(或第 3 方)API 可用于根据子字符串获取热门网站列表?
编辑:我需要使用 WKWebView 而不是新的 Safari 视图控制器,因为我希望能够注入自定义 javascript(前者不允许)
javascript - 如何将数据从 WKWebView 返回到 JavaScript
我正在使用 WebViews 开发一个混合的 Android 和 iOS 应用程序。但是,我正在努力将数据从 iOS 应用程序返回到我的 Javascript。
下面是我如何设置 WebView 以从我的 JavaScript 函数接收数据。
这就是我将数据传递给应用程序的方式。
本质上,我想做的是能够从应用程序接收数据返回到我的 JavaScript 并按照以下方式做一些事情......
但我不知道如何从应用程序返回一些东西。我是斯威夫特的新手。然而,对于 Android 开发人员来说,它可以像向我的函数添加返回类型一样简单,但这不适用于 Swift。
javascript - 将 iOS 中被调用函数的结果返回给 JavaScript 中 WkWebView 中的调用函数
我们从 javascript 调用 iOS 中的一个函数,即
我想在 iOS 中调用方法的数据变量中分配返回值。
iOS 代码:
有人可以告诉我该怎么做吗?
我知道我可以使用evaluateJavascript来回调另一种方法,但由于某些限制,我必须从同一方法返回结果。
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 中实现它时会在编译时提供错误。一旦我的开发人员可以将其邮寄给我,我将提供示例代码和编译错误输出。
ios - WKWebView 中的 iOS Objective-C LocalStore
我发现这个 SO解释了如何使用 javascript 设置本地存储。
我正在尝试将它从 Swift 翻译成 Objective-C。出于某种原因,它让我很不舒服,就像我错过了一个支架,但我似乎无法弄清楚。任何想法如何正确地将 Swift 转换为 iOS?
这是我到目前为止所拥有的:
swift - 与 WKProcessPool 共享 cookie 用于 Swift 中的 WKWebView
谁能告诉我如何在 Swift 中创建 WKProcessPool ?我不熟悉Objective-C。我必须创建一个 WKProcessPool 才能与所有 WKWebViews 共享 cookie。即使显示另一个具有相同类的视图控制器,我也想保留 cookie。我尝试了以下但它不工作。
swift - 如何在 WKWebView 中禁用 YouTube 视频的自动播放?
我有简单的 ViewController 和 WKWebView 配置如下:
但是在加载带有 YouTube 视频的网页后,它立即开始自动播放(并同时切换到全屏),无需任何用户交互。如何禁用自动播放?
ios9 - mediaPlaybackRequiresUserAction 已弃用和 iOS 9
WKWebView 配置:
mediaPlaybackRequiresUserAction
自 iOS 9 起已弃用在
WKWebViewConfiguration
:并由 Apple 指定
mediaPlaybackRequiresUserAction
已弃用的属性。相反,使用 mediaTypesRequiringUserActionForPlayback
WKWebView 配置:
根据 Apple 的文档
mediaTypesRequiringUserActionForPlayback
,仅适用于 iOS 10+。在
/li>WKWebViewConfiguration
:
所以这是我的问题:
iOS 9已mediaPlaybackRequiresUserAction
弃用,mediaTypesRequiringUserActionForPlayback
仅适用于 iOS 10+,我可以在 iOS 9 中使用什么?
swift - 在其他类中使用相同的 WKWebView
嗨,我目前在我的 Swift 3 项目中使用 WKWebView。是否可以在另一个类中保留相同的 WKWebView,以便您在不同的类中运行一个主 WKWebView?
我尝试使用 WKProcessPool 和 WKWebsiteDataStorage 来执行此操作,但是当我在另一个类中设置新的 WKWebView 时,我不知道如何引用现有配置/登录 wkwebview。
我已经在互联网上查看了所有内容,但找不到解决方案。我希望您了解我的问题并知道解决方案。提前致谢!!