【问题标题】:Open link in native browser from InAppBrowser从 InAppBrowser 在本机浏览器中打开链接
【发布时间】:2014-02-11 08:22:22
【问题描述】:

我正在构建一个使用 InAppBrowser 的应用程序。在某些时候,用户可以在此窗口中单击外部链接。我尝试了不同的方法,但似乎都没有一个很好的工作结果。

目前最好的解决方案是监听loadstart事件(As described here):

app.browser.addEventListener('loadstart', function (inAppBrowser) {
    if(inAppBrowser.url.match(/domain\.com/) === null) {
        var url = inAppBrowser.url;
        window.open(url, "_system");
    }
}

这会在新窗口中打开链接,但也会在原始 InAppBrowser 中打开。这个活动可以取消吗?或者我可以尝试其他方法吗?

我已经尝试了以下方法:

这是针对 iOS 的。

编辑: 我最终在platforms/ios/APPNAME/Plugins/org.apache.cordova.inappbrowser/CDVInAppBrowser.m 中添加了这段代码:

NSString *domainStr = [NSString stringWithFormat:@"domain.com"];
NSString *urlStr = [NSString stringWithFormat:@"%@", request.URL];
NSRange result = [urlStr rangeOfString:domainStr];

if(result.location == NSNotFound) {
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlStr]];

    return NO;
}

以上代码:

return [self.navigationDelegate webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType];

【问题讨论】:

  • 我不太明白你的问题,InAppBrowser 是用来浏览外部链接的。为什么不希望用户使用 InAppBrowser 进行导航?
  • InAppBrowser 打开一个外部网站,但该网站也有外部链接。我想在本机浏览器中打开该链接,因为该应用程序没有附带网站的一部分。
  • 如果链接不是应用程序附带的网站的一部分,为什么要显示它们?不管怎样,我要告诉你一些选择

标签: ios cordova inappbrowser


【解决方案1】:

你有一些选择:

  • 隐藏注入css到inappbrowser的外部链接,如果没有出现则无法点击

添加 loadstop 监听器,然后隐藏链接

app.browser.addEventListener('loadstop', hideLinks);



function hideLinks(){
    app.browser.insertCSS({
                      code: "a { display: none; }"
                      }, function() {
                      console.log("Styles Altered");
                      });
}
  • 在appbrowser中修改/子类化,更改shouldStartLoadWithRequest方法

如果 URL 不是你的,请将 return [self.navigationDelegate webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType]; 更改为返回 NO

【讨论】:

  • 谢谢,更改退货确实解决了我的问题。
  • 但是要小心,当你更新你的cordova版本时,它会再次覆盖inappbrowser代码。
猜你喜欢
  • 2015-09-23
  • 1970-01-01
  • 2012-02-21
  • 1970-01-01
  • 2014-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多