Плагин Cordova в приложении: Как использовать Cordova в Cordova Webview? - PullRequest
1 голос
/ 26 июня 2019
  1. Я установил плагин: в браузере приложений https://ionicframework.com/docs/native/in-app-browser

Документация находится здесь: https://github.com/apache/cordova-plugin-inappbrowser

Динамически я создал HTML-страницу в этом каталоге: this.file.dataDirectory

Я пытаюсь загрузить эту страницу в веб-представлении следующим образом:

ИМПОРТ

import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';

КОНСТРУКТОР

constructor(private iab: InAppBrowser) {}

МОЙ КОД

const browser = this.iab.create( this.webview.convertFileSrc( this.file.dataDirectory + 'jojo/index.html' ) );

Все в порядке и проблем нет.Моя страница jojo / index.html может загрузить.

Страница загружается в Cordova WebView

Если я не ошибаюсь, потому что я не устанавливаю «целевое» значение (значение по-прежнему »_self ") моя страница jojo / index.html загружается в Cordova WebView.Правильно?

Ссылка:

enter image description here

Итак ... на моей странице я хочу использовать ионные функции (или функции кордовы).

Как я могу это сделать?

PS: я уже проверял эту тему: Использование плагинов Cordova в InAppBrowser , и это другой случай.Их цель - "_blank", поэтому их страницы открываются в InAppBrowser.

Моя конфигурация

Это моя конфигурация:

Ionic:

   ionic (Ionic CLI)             : 4.12.0 (/usr/local/lib/node_modules/ionic)
   Ionic Framework               : @ionic/angular 4.4.2
   @angular-devkit/build-angular : 0.13.9
   @angular-devkit/schematics    : 7.3.9
   @angular/cli                  : 7.3.9
   @ionic/angular-toolkit        : 1.5.1

Cordova:

   cordova (Cordova CLI) : 8.1.2 (cordova-lib@8.1.1)
   Cordova Platforms     : android 7.1.4, ios 4.5.5
   Cordova Plugins       : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 4.0.1, (and 11 other plugins)

System:

   Android SDK Tools : 26.1.1 (/Users/jojo/Library/Android/sdk)
   ios-deploy        : 2.0.0
   NodeJS            : v11.10.0 (/usr/local/bin/node)
   npm               : 6.9.0
   OS                : macOS Mojave
   Xcode             : Xcode 10.2.1 Build version 10E1001

Большое спасибо за вашу помощь.

1 Ответ

0 голосов
/ 26 июня 2019

Вы не можете получить доступ к любым функциям Cordova напрямую из окна InAppBrowser.Вместо этого вам необходимо установить связь между InAppBrowser и Cordova WebView, используя доступный метод (only?), Обработчик событий message.

Ознакомьтесь с этой статьей о том, как реализовать обработчик событий message с окном InAppBrowser.В этом примере вы отправляете сообщение close из IAB в WebView, чтобы дать команду Cordova закрыть IAB, но вы можете изменить это и отправлять любые сообщения, которые вы хотите, для выполнения различных действий на стороне WebView.

Это пример кода со стороны WebView :

function openInAppBrowser() {
    // Open URL
    var open_url = 'http://www.sampleurl.com/sample.htm';
    inAppBrowserRef = cordova.InAppBrowser.open(open_url, '_blank', 'clearcache=yes,clearsessioncache=yes,location=yes,hardwareback=no,zoom=no');
    // Add event listener to close the InAppBrowser
    inAppBrowserRef.addEventListener('message', messageCallBack);
};

function messageCallBack(params) {
    // Close the InAppBrowser if we received the proper message
    if(params.data.action == 'close') {
        inAppBrowserRef.close();
    }
};

См. Статью о коде JS на стороне InAppBrowser ,и измените его в соответствии с вашими потребностями.

Обратите внимание, что для работы этого обработчика событий необходимо использовать версию плагина inappbrowser версии 3.1.0-dev .

...