Изменить URL текущего окна браузера Themeable - PullRequest
0 голосов
/ 06 июня 2018

Похоже, это должно быть довольно просто, но я не могу заставить его работать.Я просто хочу, чтобы событие resourcesPressed () сменилось на другой URL в том же браузере.Мой код:

  openBrowser() {
    const options: ThemeableBrowserOptions = {
      toolbar: {
        height: 65,
        color: '#008ba6ff'
      },
      title: {
        color: '#ffffffff',
        showPageTitle: false,
      },
      closeButton: {
        image: 'home',
        align: 'left',
        event: 'closePressed'
      },
      customButtons: [
        {
          image: 'resources',
          align: 'right',
          event: 'resourcesPressed'
        }, {
          image: 'cbt',
          align: 'right',
          event: 'cbtPressed'
        }, {
          image: 'chat',
          align: 'right',
          event: 'homechatPressed'
        }, {
          image: 'contact',
          align: 'right',
          event: 'contectPressed'
        }, 
        ],
        backButtonCanClose: true
    };

    const browser: ThemeableBrowserObject = this.themeableBrowser.create('https://homeweb.ca/dashboard', '_blank', options);

    browser.on('closePressed').subscribe(data => {
      browser.close();
    });
    browser.on('resourcesPressed').subscribe(data => {
      browser.open('https://google.ca/', '_self', options)
    });
  }

Текущий код для resourcesPressed не работает (свойство 'open' не существует для типа 'ThemeableBrowserObject').Что это должно быть?

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Решено с использованием executeScript:

openBrowser(pageToOpen) {
    const options: ThemeableBrowserOptions = {
      toolbar: {
        height: 65,
        color: '#008ba6ff'
      },
      title: {
        color: '#ffffffff',
        showPageTitle: false,
      },
      closeButton: {
        image: 'home',
        align: 'left',
        event: 'closePressed'
      },
      customButtons: [
        {
          image: 'resources',
          align: 'right',
          event: 'resourcesPressed'
        }, {
          image: 'cbt',
          align: 'right',
          event: 'cbtPressed'
        }, {
          image: 'chat',
          align: 'right',
          event: 'homechatPressed'
        }, {
          image: 'contact',
          align: 'right',
          event: 'contectPressed'
        }, 
      ],
      backButtonCanClose: true
    };

    const browser: ThemeableBrowserObject = this.themeableBrowser.create(pageToOpen, '_blank', options);

    browser.on('closePressed').subscribe(data => {
      browser.close();
    });
    browser.on('cbtPressed').subscribe(data => {
      browser.executeScript({
        code: "window.location.href ='www.example1.com';"
      });
    });
    browser.on('resourcesPressed').subscribe(data => {
      browser.executeScript({
        code: "window.location.href ='www.example2.com';"
      });
    });
  }
0 голосов
/ 07 июня 2018

Я предполагаю, что вы используете этот плагин: https://github.com/initialxy/cordova-plugin-themeablebrowser

Я бы сделал это:

const browser = cordova.ThemeableBrowser;

Я не вижу, для чего предназначен ThemeableBrowserObject, и .create ()не существует.

При условии, что он работает как InAppBrowser, для которого он является форком, каждый вызов open () открывает новое представление браузера.

Вы добавили cordova-plugin-themeablebrowser впроект?

...