0
iOS 9では正常に動作しますが、iOS 10では動作しないコード、特にdoBar()が呼び出されていません。ここでWKWebViewで私はJavaScriptのコードを注入しています。 WebページのjsコードでWKUserScriptはiOS10では呼び出しませんが、iOS9で動作します
let jsFoo = "function doFoo() { window.webkit.messageHandlers.doFoo.postMessage(\"doFoo\"); }"
let jsBar = "class MyInterface { static doBar() { window.webkit.messageHandlers.doBar.postMessage(\"doBar\"); } }"
let fooScript = WKUserScript(source: jsFoo, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
let barScript = WKUserScript(source: jsBar, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
contentController.addUserScript(logoutScript)
contentController.addUserScript(openPDFScript)
contentController.add(self, name: "doFoo")
contentController.add(self, name: "doBar")
呼び出します
window.doFoo() // works in both iOS 9 and iOS 10
window.MyInterface.doBar() // works in iOS 9, but NOT working in iOS 10
SafariのデバッガをしかしdoBarコードを持つユーザースクリプトが存在する、iOSの10にwindow.MyInterfaceが未定義であることを示しています。
doBarを正しく挿入するにはどうすればいいですか?ウェブコードを変更できないと仮定して、iOS 10でも動作しますか?