我在iOS8中的WKWebView显示一个从Javascript调用的提醒对话框时遇到了一些麻烦。在创建了一个标准的WKWebView并加载了一个HTML文件后,我在页面上有一个按钮,它可以创建一个带有一些文本的简单提醒。这个按钮在UIWebView和Google Chrome/Safari中有效,但在WKWebView中似乎不起作用。感谢任何帮助。
我的设置如下:
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
config.allowsInlineMediaPlayback = YES;
config.mediaPlaybackRequiresUserAction = false;
_wkViewWeb = [[WKWebView alloc] initWithFrame:_viewWeb.frame config];
_wkViewWeb.scrollView.scrollEnabled = NO;
NSString *fullURL = @"file://.../TestSlide.html";
NSURL *url = [NSURL URLWithString:fullURL];
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];
[_wkViewWeb loadRequest:request];
html具有以下功能:
<SCRIPT Language="JavaScript">
function alertTest() {
alert("Testing Alerts");
}
</SCRIPT>
还有一个按钮:
<b>Test Alerts: <input type="button" value="Alert Popup" onclick="alertTest()"><br></b> <br>
此设置在UIWebView和常规浏览器中有效,但在WKWebView中无效。我是否遗漏了配置中的某些内容?我是否应该使用WK委托来控制警报/确认对话框行为?谢谢。
7条答案
按热度按时间vlf7wbxs1#
以下是Swift 4.2中的代码
qyswt5oh2#
1.视图控制器
1.启用JavaScript
1.在ViewDidLoad()函数中添加以下项
1.按如下方式添加委托
vhipe2zx3#
要解决这个问题,您需要一个WKUID代理来显示您的网页视图。代理的职责是决定是否显示警告,以及以什么方式显示。您需要实现警告,确认和文本输入(提示)。
以下是没有验证页面url或安全特性的示例代码:
官方文档中的更多内容
1szpjjfi4#
Swift 3实现了所有3个可选功能:
7y4bm7vi5#
Just to expand a bit,
WKWebView
requires you to show alerts, prompts, and confirms yourself. Do this by becoming aWKUIDelegate
:Then assign the delegate:
Then you need to actually implement alert, prompt, and confirm. I create WKWebViewPanelManager.h/m as an easy implementation, so here's what I do:
Of course, it's up to you to filter out bad alert/confirm/prompt requests.
41zrol4v6#
下面是swift中的内容:
dzjeubhm7#
1.将协议实现到WKWebview容器控制器。WKUID委派
1.将首选项添加到WKWebview,以便在**viewDidLoad()**中启用javascript作为。
1.将viewDidLoad()中的WKWebviewUI委托注册为
1.在您的类别中实作下列委派。