首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Capacitor的应用内浏览器中打开所有链接?

如何在Capacitor的应用内浏览器中打开所有链接?
EN

Stack Overflow用户
提问于 2020-01-09 13:18:58
回答 2查看 5.3K关注 0票数 2

我想配置Capacitor打开所有链接,如下所示:

代码语言:javascript
复制
<a href="https://www.google.com" target="_blank">Google Link</a>

在Capacitor的应用内浏览器功能中。我知道我可以通过使用Browser APIopen()方法打开它,但是我的一些超文本标记语言内容(以及它的链接)来自数据库。目前在iOS和安卓系统上,我的应用程序使用Safari等外部浏览器打开上面的链接。

资料来源:

https://capacitor.ionicframework.com/docs/apis/browser

编辑-我不太喜欢的当前解决方案:

代码语言:javascript
复制
    if (this.$q.platform.is.capacitor) {
      document.onclick = function(event: any): boolean | void {
        const element: any = event.target || event.srcElement;

        if (element.tagName === 'A' && element.target === '_blank' && element.href) {
          event.preventDefault();
          Browser.open({ url: element.href });
          return true;
        }
      };
    }
EN

回答 2

Stack Overflow用户

发布于 2021-03-26 22:54:09

如果你不想“退出”到外部浏览器,你可能只需要添加到capacitor.config.json:

代码语言:javascript
复制
"server": {
  "allowNavigation": [
    "*"
  ]
}
票数 2
EN

Stack Overflow用户

发布于 2020-07-15 16:58:21

下面是我使用的(React)的基本版本:

代码语言:javascript
复制
// override window.open

import {
  Capacitor,
  Plugins,
} from '@capacitor/core';

const { Browser } = Plugins;

if (Capacitor.isNative) {
  window.open = async url => Browser.open({ url });
}
代码语言:javascript
复制
// custom component that links

const { label, link, onClick } = props;
const handleClick = (e) => {
    if (link) {
      window.open(link, '_blank');
    } else if (onClick) {
      onClick(e);
    }
  };
return (
  <div onClick={handleClick}>{label}</div>
);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59657649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档