我知道有上千个线程在谈论这个主题,但是实际上,真正阅读它们并执行他们所说的内容,我找不到密钥。而且..我已经阅读并尝试了很多。
我的问题如下。我正在使用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中仍然保留访问源,允许导航和允许意图的规则,我仅将我的域定位为目标。
答案 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();
}
});