【问题标题】:evaluateJavaScript WKWebView iOS 15 not working评估JavaScript WKWebView iOS 15不工作
【发布时间】:2021-11-02 09:34:18
【问题描述】:

我正在使用 WebCrypto 库来解密数据,但它不适用于 iOS 15 它在 iOS 14 中运行良好

我检查了 webView 的 evaluateJavaScript 函数是否抛出错误

Error Domain=WKErrorDomain Code=4 "A JavaScript exception occurred" UserInfo={WKJavaScriptExceptionLineNumber=27, 
WKJavaScriptExceptionMessage=TypeError: undefined is not an object (evaluating 'y.importKey'), WKJavaScriptExceptionColumnNumber=8260, 
WKJavaScriptExceptionSourceURL=undefined, NSLocalizedDescription=A JavaScript exception occurred}

【问题讨论】:

    标签: swift ios15 webcrypto


    【解决方案1】:

    我也偶然发现了这一点,新的 IOS15 行为也确实破坏了我们的代码。显然 Apple 改变了 evaluateJavaScript 的语义: 根据何时,如果调用过早,新函数不会出现在 JS 命名空间中。

    [_webview evaluateJavaScript:@"function foobar() {console.log('in foobar');}" completionHandler:^(NSObject* res,NSError* err) {
    }];
    

    如果这段代码被调用之前

    [_webview loadRequest:req];
    

    然后它不再有任何效果(但此时没有引发错误..该函数进入 nirvana )。 解决方案是添加https://developer.apple.com/forums/thread/684020中指出的用户脚本之类的代码

    WKUserScript *script = [[WKUserScript alloc] initWithSource:@"function foobar() {console.log('in foobar');" injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:NO];
    [_webview.configuration.userContentController addUserScript:script];
    

    【讨论】:

      猜你喜欢
      • 2015-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      相关资源
      最近更新 更多