使用离子应用程序内的系统浏览器打开所有链接

塞巴斯蒂安·埃尔南德斯(Sebastian Hernandez)

我需要在系统浏览器中打开应用程序特定部分内的所有链接。诀窍是这些链接来自外部资源(API),因此我无法添加ng-click帮助我从外部打开链接功能。

我正在使用应用程序内浏览器插件(ng-cordova)。实际上,我还有其他可在外部打开的链接,但是在这种情况下,这些链接可以位于内容的任何部分,因此我的问题是,如何在所有链接加载后向所有链接添加ng-click指令?还是有可能,如何配置应用内浏览器插件以在系统浏览器中打开所有链接?

顺便说一句,即使在应用程序浏览器中,简单链接也不会打开:我点击它们,没有任何反应。

谢谢您的帮助

caiocpricci2

AFAIK没有自动执行此操作的方法,您必须使用应用程序内浏览器js代码在每个平台上从外部一致地打开链接。

您的问题没有给出服务器返回值的清晰示例,因此我假设您正在获取完整的html块,而只是将其呈现在屏幕上。假设请求返回的基本信息如下:

<div id="my-links">
   <a href='http://externallink.com'> External Link 1 </a>
   <a href='http://externallink.com'> External Link 2 </a>
   <a href='http://externallink.com'> External Link 3 </a>
</div>

您的请求如下所示:

$http.get('givemelinks').success(function(htmlData){
   $scope.myContent = htmlData;
})

如果您有权访问服务器端并可以进行更改:

在您的请求中添加一个“ inappbrowser”参数,以检测是否应返回与inappbrowser兼容的链接并将服务器的响应更改为:

if (inappbrowser) {
<div id="my-links">
   <div ng-click='openExternal($event)' data-external='http://externallink.com'> External Link 1 </div>
   <div ng-click='openExternal($event)' data-external='http://externallink.com'> External Link 2 </div>
   <div ng-click='openExternal($event)' data-external='http://externallink.com'> External Link 3 </div>
</div>
} else {
 <div id="my-links">
   <a href='http://externallink.com'> External Link 1 </a>
   <a href='http://externallink.com'> External Link 2 </a>
   <a href='http://externallink.com'> External Link 3 </a>
</div>
}

并有一个通用的openExternal方法:

$scope.openExternal = function($event){
  if ($event.currentTarget && $event.currentTarget.attributes['data-external'])
  window.open($event.currentTarget.attributes['data-external'], '_blank', 'location=yes');
}

如果您不能更改服务器端

解析响应并将链接替换为ng-clicks:

$http.get('givemelinks').success(function(htmlData){
   htmlData = htmlData.replace(/href='(.*)'/,'ng-click="openExternal($event)" data-external="$1"').replace(/<a/,"<div").replace(/a>/,"div>")
   $scope.myContent = htmlData;
})

并使用与上述相同的openExternal方法。

我将div替换为锚点,以防止更改应用程序路线。并非每个应用程序都需要这样做。

为了使它更好,您应该将其捆绑在一个open-external指令中,以便可以在多个控制器中使用它并保持它们更整洁。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Android的WebView的外部浏览器和应用程序内打开链接

来自分类Dev

在Ionic Cordova应用程序中,如何允许通过不同来源的内容在系统浏览器中打开链接

来自分类Dev

Android应用程序链接-在浏览器中从应用程序打开URL而不触发应用程序链接

来自分类Dev

是否可以根据打开链接的应用程序设置不同的浏览器来打开链接?

来自分类Dev

iOS应用程序,链接以在浏览器中打开网站,网站中的链接关闭浏览器

来自分类Dev

如何使Google Chrome浏览器的“应用程序模式”在外部浏览器中打开外部链接?

来自分类Dev

Angular Marked和Inappbrowser在系统浏览器中打开所有链接

来自分类Dev

Angular Marked和Inappbrowser在系统浏览器中打开所有链接

来自分类Dev

正确在浏览器或本机应用程序中打开Facebook页面链接IOS Cordova

来自分类Dev

Android WebView在浏览器而不是应用程序中打开链接

来自分类Dev

Webview-在外部应用程序和浏览器/ Android中打开链接

来自分类Dev

在链接点击而不是浏览器上打开我的应用程序-Android

来自分类Dev

如何打开从打包的应用程序Web视图到默认浏览器的链接?

来自分类Dev

如何防止应用程序浏览器中的Facebook打开我的网站链接?

来自分类Dev

phonegap和cordova无法在应用程序浏览器中打开链接

来自分类Dev

正确在浏览器或本机应用程序中打开Facebook页面链接IOS Cordova

来自分类Dev

标记电子邮件链接以在Web浏览器而非移动应用程序中打开

来自分类Dev

如何打开从打包的应用程序Web视图到默认浏览器的链接?

来自分类Dev

从 iOS 应用程序在浏览器中打开超链接

来自分类Dev

单击链接时阻止 iOS 移动浏览器强制打开应用程序?

来自分类Dev

单击外部链接时如何在 WebView 应用程序中打开 Web 浏览器?

来自分类Dev

有没有办法从Internet浏览器打开应用程序?

来自分类Dev

有没有办法从Internet浏览器打开应用程序?

来自分类Dev

WebView 打开应用程序/默认浏览器

来自分类Dev

如何从浏览器选择使用Software Center应用程序打开?

来自分类Dev

使用命令行从应用程序在浏览器中打开GMail帐户

来自分类Dev

如何从浏览器选择使用Software Center应用程序打开?

来自分类Dev

使用C#控制台应用程序打开和关闭Internet浏览器

来自分类Dev

.NET Core 应用程序中浏览器链接使用的端口无效

Related 相关文章

  1. 1

    如何在Android的WebView的外部浏览器和应用程序内打开链接

  2. 2

    在Ionic Cordova应用程序中,如何允许通过不同来源的内容在系统浏览器中打开链接

  3. 3

    Android应用程序链接-在浏览器中从应用程序打开URL而不触发应用程序链接

  4. 4

    是否可以根据打开链接的应用程序设置不同的浏览器来打开链接?

  5. 5

    iOS应用程序,链接以在浏览器中打开网站,网站中的链接关闭浏览器

  6. 6

    如何使Google Chrome浏览器的“应用程序模式”在外部浏览器中打开外部链接?

  7. 7

    Angular Marked和Inappbrowser在系统浏览器中打开所有链接

  8. 8

    Angular Marked和Inappbrowser在系统浏览器中打开所有链接

  9. 9

    正确在浏览器或本机应用程序中打开Facebook页面链接IOS Cordova

  10. 10

    Android WebView在浏览器而不是应用程序中打开链接

  11. 11

    Webview-在外部应用程序和浏览器/ Android中打开链接

  12. 12

    在链接点击而不是浏览器上打开我的应用程序-Android

  13. 13

    如何打开从打包的应用程序Web视图到默认浏览器的链接?

  14. 14

    如何防止应用程序浏览器中的Facebook打开我的网站链接?

  15. 15

    phonegap和cordova无法在应用程序浏览器中打开链接

  16. 16

    正确在浏览器或本机应用程序中打开Facebook页面链接IOS Cordova

  17. 17

    标记电子邮件链接以在Web浏览器而非移动应用程序中打开

  18. 18

    如何打开从打包的应用程序Web视图到默认浏览器的链接?

  19. 19

    从 iOS 应用程序在浏览器中打开超链接

  20. 20

    单击链接时阻止 iOS 移动浏览器强制打开应用程序?

  21. 21

    单击外部链接时如何在 WebView 应用程序中打开 Web 浏览器?

  22. 22

    有没有办法从Internet浏览器打开应用程序?

  23. 23

    有没有办法从Internet浏览器打开应用程序?

  24. 24

    WebView 打开应用程序/默认浏览器

  25. 25

    如何从浏览器选择使用Software Center应用程序打开?

  26. 26

    使用命令行从应用程序在浏览器中打开GMail帐户

  27. 27

    如何从浏览器选择使用Software Center应用程序打开?

  28. 28

    使用C#控制台应用程序打开和关闭Internet浏览器

  29. 29

    .NET Core 应用程序中浏览器链接使用的端口无效

热门标签

归档