window.webkit в Typescript - PullRequest
       1

window.webkit в Typescript

2 голосов
/ 05 июля 2019

Мне нужно переписать код JavaScript в машинописный текст (угловой), веб-страница открывается приложением IOS или приложением Android.Я просто хочу отправить сообщение в приложение.

Как я могу отправить сообщение в родительское приложение или как я могу использовать window.webkit?

notifyTheApp(postData) {
  if (navigator.userAgent.match(/(iPod|iPhone|iPad)/)) {
    if(window.webkit.messageHandlers)      
     window.webkit.messageHandlers.mpos.postMessage(JSON.stringify(postData));
    } 
    else {
      if(window.external.notify)
        window.external.notify(JSON.stringify(postData));
    }

mposтакое приложение для iOS

ОШИБКА в src / app / sms-validation / sms-validation.component.ts (98,17): ошибка TS2339: свойство 'webkit' не существует навведите «Окно».

Ответы [ 3 ]

2 голосов
/ 05 июля 2019

Вы можете использовать утверждение типа (https://basarat.gitbooks.io/typescript/content/docs/types/type-assertion.html) для временного приведения window типа any. Вы потеряете intellisense для этого оператора.

(window as any).webkit.messageHandlers
2 голосов
/ 05 июля 2019

Я считаю, window.webkit довольно далеко от стандарта, и поэтому он не является частью типа window в Typescript.Вы можете добавить его следующим образом:

interface Window {
    webkit?: any;
}

declare var window: Window;

Обратите внимание, что webkit? означает, что свойство является необязательным, поэтому вам следует проверить, существует ли свойство или нет.

0 голосов
/ 05 июля 2019

Если вы не забыли window.webkit, вы можете использовать webView. Сначала вы должны определить его, по умолчанию нет объекта (в окне):

  window.webkit

Просто добавьте это:

 let contentController = self.webView.configuration.userContentController
 contentController.addScriptMessageHandler(self, name: "callbackHandler")


 let config = WKWebViewConfiguration()
 config.userContentController = contentController


 let webView = WKWebView(frame: CGRect.zero, configuration: config)

 // Add callback func 

 func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {

     // message.name is "callbackHandler"
     // message.body is ["programming":"js"]
 }


Теперь вы можете позвонить в браузере env:

  var message = {'programming':'js'};
  window.webkit.messageHandlers.callbackHandler.postMessage(message);

Ссылка:

https://developer.apple.com/library/ios/documentation/WebKit/Reference/WKUserContentController_Ref/index.html#//apple_ref/occ/instm/WKUserContentController/addScriptMessageHandler:name:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...