代码之家  ›  专栏  ›  技术社区  ›  Sergey Rudenko

如何调用上下文菜单来保存应用程序中的图像?

  •  0
  • Sergey Rudenko  · 技术社区  · 6 年前

    如果我进入Safari mobile(iOS 11+)浏览器并登陆www.google.com -我可以长按谷歌的logo(img元素)并调用“上下文菜单”:

    enter image description here

    现在我想对爱奥尼亚的页面中的img元素做同样的处理(不管它是PWA还是hybrid应用程序)。

    我怎样才能做到呢?

    默认情况下,如果我创建一个空白的应用程序,并将任何img放入其中,我可以在桌面上获得上下文菜单,但在Safari mobile上没有。

    代码方面,我看了谷歌的页面,这应该是任何img元素,类似这样:

    <ion-header>
      <ion-navbar>
        <ion-title>Home</ion-title>
      </ion-navbar>
    </ion-header>
    
    <ion-content padding>
      <h2>Try to call context menu here:</h2>
      <img src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png">
    </ion-content>
    

    0 回复  |  直到 6 年前
        1
  •  1
  •   Mr Lister hawi    6 年前

    好吧,我知道怎么做了。 所以第一件事-确保你没有阻止默认行为的contextmenu在你的应用程序。例如,我有下面的代码,以防止上下文菜单等奇怪:

    if ("oncontextmenu" in window) {
          window.oncontextmenu = (event) => {
            event.preventDefault();
            event.stopPropagation();
            return false;
          };
    };
    

    现在在android应用程序中,默认情况下长按(touch)键超过实际值 <img> 将调用用户可以用来保存图像的上下文菜单。

    对于iOS,您还需要在图像上设置此CSS属性:

    img {
            -webkit-touch-callout: default !important;
            width: 100%;
            height: 100%;
        }
    

    有了它,你可以实现用户调用上下文菜单保存图像使用标准的平台用户界面。没有其他好的用户体验,我知道关闭iOS的“保存”图像现在(下载基本上打开图像在新窗口…)

        2
  •  0
  •   3squad    6 年前

    有这样的插件 LongPress

    npm i ionic-long-press
    

    然后就跑 ActionSheet