【问题标题】:InAppBrowser Allow-Navigation ONLY MY DOMAIN when it is already openInAppBrowser Allow-Navigation ONLY MY DOMAIN 当它已经打开时
【发布时间】:2019-11-24 02:09:30
【问题描述】:

我知道有一千个线程在谈论这个话题,但就是这样,真正阅读它们并执行它们所说的话,我找不到关键。而且..我已经阅读并尝试了很多。

我的问题如下。我正在使用 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 中仍然有访问来源、允许导航和允许意图的规则,我只针对我的域。

【问题讨论】:

    标签: cordova ionic-framework webview inappbrowser


    【解决方案1】:

    如果您确实必须像这样实现 IAB,您可以使用 loadstart 事件侦听器(如 in this article 所述)来防止加载未经授权的 URL,然后在不需要导航的 URL 时使用 close 方法退出它.您还可以重新加载您的初始域。 (跳转到链接文章中的使用loadstart事件关闭InAppBrowser

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

    【讨论】:

    • 如果我不使用IAB,使用什么插件,或者我使用什么,以便创建一个只会使用浏览器的应用程序,因为它是一个WebView。我知道有一个cordova(或离子,我不记得)的原生WebView。但我几乎找不到文档
    • 我的错,因为我没有使用 IONIC 键入 im。我使用了您文章的代码,不推荐使用“打开”功能。但不适用于 Ionic >.
    【解决方案2】:

    感谢@andreszs 的帖子,我找到了解决方案。

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

    this.browser = this.iab.create(myurl, '_blank', 'location=yes');
    
    this.browser.on('loadstart').subscribe(event => {
        if(event.url.search(notMYurl) == -1) {
             this.browser.close();
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      相关资源
      最近更新 更多