uni-app页面 英文文本选词

发布于 1周前 作者 songsunli 来自 Uni-App

uni-app页面 英文文本选词

相关需求:uniapp页面为英文文本,点击或长按文本中的单词,即可弹出该单词的中文释意。

相关问题:如何获取刚点击或长按的单词

3 回复

咨询 QQ 583069500


text、textarea、文本、输入框、自定义长按选择菜单:https://ext.dcloud.net.cn/plugin?id=10586

在处理uni-app页面中的英文文本选词功能时,你可以利用JavaScript和uni-app提供的API来实现一个简单的文本选择功能。以下是一个基本的实现案例,它展示了如何在页面中创建一个可选择的文本区域,并提供一个按钮来触发文本选择功能。

首先,确保你的uni-app项目已经初始化并设置好。接下来,在页面的.vue文件中编写以下代码:

<template>
  <view class="container">
    <textarea id="text-area" :value="text" readonly></textarea>
    <button @click="selectText">Select Text</button>
  </view>
</template>

<script>
export default {
  data() {
    return {
      text: 'This is a sample text for selection.'
    };
  },
  methods: {
    selectText() {
      // 获取文本区域元素
      const textArea = uni.createSelectorQuery().select('#text-area');
      textArea.boundingClientRect(data => {
        // 获取文本区域的坐标和大小
        const { left, top, width, height } = data;
        // 执行文本选择
        uni.createSelectorQuery().select('#text-area').node(node => {
          const context = node.context();
          // 设置选择范围(整个文本区域)
          context.selectTextRange({
            start: 0,
            end: this.text.length,
          }, () => {
            // 文本选择成功后的回调(可选)
            console.log('Text selected');
          });
        }).exec();
      }).exec();
    }
  }
};
</script>

<style>
.container {
  padding: 20px;
}
textarea {
  width: 100%;
  height: 100px;
  margin-bottom: 10px;
  border: 1px solid #ccc;
  border-radius: 4px;
  padding: 10px;
  box-sizing: border-box;
}
button {
  padding: 10px 20px;
  background-color: #007aff;
  color: white;
  border: none;
  border-radius: 4px;
}
</style>

在这个例子中,我们创建了一个textarea元素来显示英文文本,并将其设置为只读(readonly),以避免用户编辑。然后,我们添加了一个按钮,当用户点击该按钮时,会触发selectText方法。

selectText方法使用uni.createSelectorQuery()来获取文本区域的坐标和大小,然后使用node.context().selectTextRange()方法来设置文本选择范围。这里,我们选择整个文本区域(从索引0到文本长度的末尾)。

请注意,这个示例是基于uni-app框架的,它可能在不同平台上(如小程序、H5、App等)的行为略有不同。确保在实际部署前在不同平台上进行充分的测试。

回到顶部