首页 > 解决方案 > 为什么 Ionic 默认不允许复制粘贴?

问题描述

从我看到的其他问题和离子论坛(见下面的链接)看来,离子在它的组件中有某种默认设置,自动应用于user-select: none应用程序的主体。

我不是在这里寻找解决方法,而是我想了解这样做的目的。为什么 ionic 开发人员将其设为默认值?这究竟是如何应用的?后台是否有一些 javascript 正在应用它?

如果我在 app.scss 中应用解决方法:

body {
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
}

或在 app.module.ts 中申请:

@NgModule({
  declarations: [
    ....
  ],
  imports: [
    BrowserModule,
    IonicModule.forRoot(MyApp, {
      platforms: {
        ios: {
          scrollAssist: false,
          autoFocusAssist: false
        },
        android: {
          scrollAssist: false,
          autoFocusAssist: false
        }
      }
    }),
    HttpModule
  ]
})
....,

..我会覆盖最初打算使用的 Ionic 的一些有用或基本功能吗?

应用这些选项之一会产生什么副作用?

参考链接: 离子2:如何使文本可选?

https://github.com/ionic-team/ionic/issues/5198#issuecomment-344606178

标签: angularionic-frameworksassionic4

解决方案


Ionic 使用hammer.js,默认情况下以某种方式优化行为(眼睛触摸)。具体看这个页面:http ://hammerjs.github.io/tips/

“我不能再选择我的文字了!” Hammer 正在设置一个属性来改进桌面上平移的 UX。通常,桌面浏览器会在您拖动页面时选择文本。用户选择 css 属性禁用此功能。

如果您关心文本选择而不是桌面体验,您可以简单地从默认值中删除此选项。确保在创建实例之前执行此操作。

delete Hammer.defaults.cssProps.userSelect;

推荐阅读