【问题标题】:Prevent iOS Webkit Long Press on Link防止 iOS Webkit 长按链接
【发布时间】:2012-02-04 22:16:27
【问题描述】:

在我正在开发的 iOS 应用程序中,我显示UIWebView 以允许用户升级他们的帐户。该页面包含向用户显示其他信息的链接,但是您将手指放在链接上,会弹出如下菜单:

如您所见,它显示了页面的 URL 和将执行的操作,我不希望用户看到,因为我不希望他们能够复制任何内容,因为我禁用了“复制/剪切/粘贴”菜单已经存在。我将如何禁用此菜单?

感谢您的任何指点。

【问题讨论】:

  • 您有什么好的理由要阻止用户这样做吗?在我看来,不打扰会更容易。

标签: javascript iphone ios objective-c uiwebview


【解决方案1】:

我认为您可以通过在链接上将the CSS -webkit-touch-callout property 设置为none 来禁用该弹出窗口。您可以通过编辑您正在加载的 HTML 或 CSS 文件来完成此操作,而不是使用 Objective-C。

【讨论】:

    【解决方案2】:

    如果您想在您的整个 HTML 页面上同时禁用弹出窗口用户选择文本,请在网页的 BODY 或全局 css 上使用它。

      body {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
    }
    

    【讨论】:

    • 这行得通。但是,如果您担心用户会更改您的 CSS,请使用this other answer 建议的编程方法。并搜索相关/重复的问题和答案。
    • 您可以使用* { 而不是body { 来覆盖所有内容。
    • 如果您希望输入和文本区域正常工作,您需要使用*:not(input,textarea) {}
    【解决方案3】:

    正如Rob 所述,您想要做的是禁用UIWebView 的默认上下文菜单。您可以通过在webViewDidFinishLoad:添加以下行来实现它

       [webView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitTouchCallout='none';"];
    

    【讨论】:

      【解决方案4】:

      无需告诉浏览器你有一个链接,然后强迫它不像一个链接!

      完全删除href="void(0)"

      您的ontouchendonclick 属性仍然有效


      如果你想要正常的蓝色/下划线外观,你可以添加这个 css:

      a .originalLink { color: blue; text-decoration: underline; cursor: pointer; }
      

      这节省了大量的 CPU 周期,尤其是当页面中有数百个链接而用户平滑滚动时。

      您还可以使用以下方法将其扩展到常规 URL:

      <a class="originalLink" onclick="location.href='http://mylink';">Real URL Link</a>
      

      当然,您的 SEO 已经过时了,但对于特定移动网络应用情况,这可能至关重要。

      编码愉快!

      【讨论】:

        猜你喜欢
        • 2012-06-08
        • 2011-05-03
        • 1970-01-01
        • 2010-09-08
        • 2020-04-12
        • 1970-01-01
        • 2015-07-08
        • 2011-03-28
        • 1970-01-01
        相关资源
        最近更新 更多