сообщение об ошибке в WKWebView на устройстве ios 12 - PullRequest
0 голосов
/ 17 октября 2018

Os: ipad 12.0.1

У нас есть HTML, как показано ниже.

sample.html

<!DOCTYPE html>
<html lang="en">

<head>
    <title>Tekion 3d model</title>
    <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
                </head>

<body class="noselect">
    <button onclick="sendMessageToNative({a:1, b:2})" style="margin-top:40px;">Get message from web page</button>
    <h4 id='statustext'>Header 2</h4>
    <script>

        function sendMessageToHTML(message) {
            const s = JSON.stringify(message);
            document.getElementById("statustext").innerHTML = s;
        }

        function sendMessageToNative(message){
            try{
               window.webkit.messageHandlers.receiver.postMessage(JSON.stringify(message));
            }catch(err){

            }
        }
    </script>
</body>

и мы загружаем его в WKWebView, как показано ниже.

Цель c file.m

WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
WKUserContentController *ucc = [[WKUserContentController alloc] init];
[ucc addScriptMessageHandler:self name:@"receiver"];
[configuration setUserContentController:ucc];
[configuration.preferences setValue:@"TRUE" forKey:@"allowFileAccessFromFileURLs"];


 self.webView = [[TWKWebView alloc] initWithFrame: CGRectMake(0, 0, 400, 100) configuration:configuration];
 self.webView.scrollView.bounces  = false;


 NSString* path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"html/sample.html"];
 NSURL *nsurl = [NSURL fileURLWithPath:path];
 NSURLRequest *nsr = [NSURLRequest requestWithURL:nsurl];


 self.webView.navigationDelegate = self;
 [self.webView loadRequest:nsr];

, а также получатель находится в том же файле, что и выше.

- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message{
  if([message.name isEqualToString:@"receiver"]) {
       NSLog(@"-----------messageFromHTML %@", message.body );
   }
 }

при запуске вышеуказанного кода на устройстве ios 11 он работает нормально.Мы можем отправлять сообщения в файл sample.html и из него.

При запуске на ios 12.0.1, страница обрабатывается, мы можем передать сообщение в javascript с помощьюvaluJavascript (не показано в коде выше).Но, по нажатию кнопки 'Получить сообщение с веб-страницы' * приложение 1025 * вылетает.

Мы понятия не имеем, почему это происходит только в ios12.0.1.Мы что-то упустили?или это ошибка в wkwebview.

...