InAppBrowser已打开时,“仅我的域”允许导航

时间:2019-07-15 11:18:56

标签: cordova ionic-framework webview inappbrowser

我知道有上千个线程在谈论这个主题,但是实际上,真正阅读它们并执行他们所说的内容,我找不到密钥。而且..我已经阅读并尝试了很多。

我的问题如下。我正在使用InAppBrowser模块(InAppBrowser from @ ionic-native / in-app-browser / ngx)

我正在创建以下代码。

constructor (private iab: InAppBrowser, private platform: Platform) {
    this.iab.create ('http://www.myweb.com/app', '_blank', 'EnableViewPortScale = yes, location = no, hidenavigationbuttons = yes, enableViewportScale = yes, hideurlbar = yes, zoom = no, mediaPlaybackRequiresUserAction = yes');
  }

这将在我的应用程序中打开一个浏览器,直到此处一切正确。但是,一旦进入,如果我开始导航并离开自己的域,我希望它不可能。 但是,一旦打开浏览器,就好像我的应用程序不负责我浏览的域。

在config.xml中仍然保留访问源,允许导航和允许意图的规则,我仅将我的域定位为目标。

2 个答案:

答案 0 :(得分:1)

如果您确实必须实现这样的IAB,则可以按照in this article的说明使用loadstart事件监听器,然后使用close方法退出,以防止加载未经授权的URL只要不需要浏览的网址。您也可以重新加载初始域。 (跳至链接文章中的 使用loadstart事件关闭InAppBrowser

无论如何,您应该尽可能避免使用 InAppBrowser

答案 1 :(得分:0)

谢谢@andreszs,我找到了解决方法。

真正的问题是,至少使用IONIC NATIVE InAppBrowser。如果“位置”选项未激活,则不会加载诸如browser.on('loadstart')之类的事件。然后,使用ionic的angular @ typescript代码,我可以调用cordova inappbrowser的base函数。

this.browser = this.iab.create(myurl, '_blank', 'location=yes');

this.browser.on('loadstart').subscribe(event => {
    if(event.url.search(notMYurl) == -1) {
         this.browser.close();
    }
});