我如何覆盖InAppBrowser的网址?

时间:2018-01-20 13:31:59

标签: typescript ionic-framework inappbrowser

我正在尝试使用on loadstart事件覆盖InAppBrowser网址,但遗憾的是没有运气,我不知道我是否遗漏了某些内容,或者即使这是否适用。

我想要做的是我用一个字符串连接url所以当用户点击InAappBrowser窗口中的任何url时,我用连接字符串覆盖该url。

我会感激任何帮助,或者如果有人之前尝试过这样的事情。

import { Component } from '@angular/core';
import { InAppBrowser } from '@ionic-native/in-app-browser';


@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {

  browser: any;

  constructor(
    public iab: InAppBrowser
  ) {}

  openPage(){
    this.browser = this.iab.create('http://example.com','_blank','hidden=no,location=yes');
    this.browser.on('loadstart')
    .subscribe(
      data => data.url = data.url + '?mydata=true'
    );
  }
}

2 个答案:

答案 0 :(得分:1)

答案是在loadstart上执行javascript代码,以使用executeScript InAppBrowser方法覆盖使用我的新网址点击的任何网址。

openPage(){
    this.browser = this.iab.create('https://example.com/','_blank','hidden=yes,location=yes,clearcache=yes,clearsessioncache=yes');
    this.browser.on('loadstart')
    .subscribe(
      data => {
        if(!data.url.includes('?mydata=true')){
          this.browser.executeScript({
            code: `window.location.href = '${data.url}' + '?mydata=true';`
          });
        } 
      }
    );
    this.browser.show(); 
  }

答案 1 :(得分:0)

问题是您正在将位置字符串修改为所需的位置字符串但未加载它。这需要再次在浏览器中加载:

data.url = data.url + '?mydata=true'

希望这有帮助。