HarmonyOS web组件长按文本弹出菜单,如何获取选中区域,或者点击菜单按钮后选中区域不消失

在web中selectionMenuOptions(this.menuOptionArray)设置自定义菜单

长按点击自定义菜单后,调用js交互通知h5,然后h5里有执行方法获取选区去做后面的动作

现在点击菜单按钮,通过原生代码通知h5的时候,选中状态就被取消了,导致h5里面后面的逻辑执行不了

@State menuOptionArray: Array<ExpandedMenuItemOptions> = [
//划线 - 直接完成
  {
    content: 'test', action: (selectedText) => {
    console.info('划线 select info ' + JSON.stringify(selectedText));
    let jsStr = "window.getSelection().getRangeAt(0)"
    this.webController.runJavaScript(jsStr).then(value => {
      //TODO  这里获取不到value
      console.log(value)
    })
  }
  },
]
HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fox280

这个写法不太对,可以使用JavaScriptProxy方法注册一个js代理方法过去,然后在监听长按事件的回调中将选中的文本赋值给注册过去的js代理方法即可

可以参考

function test(par) {
  let aaa = ''
  document.addEventListener('selectionchange', () => {
    const selection = window.getSelection();
    const selectedText = selection.toString();
    let str = objTestName.webString(selectedText)
    console.log(`Selected text: ${selectedText}`);
    console.log(`Selected text:` + str);
  });
  return aaa
}
分享
微博
QQ
微信
回复
1天前
相关问题
如何在onPageShow中区分getParams来源
1965浏览 • 1回复 待解决
HarmonyOS 如何扩大组件点击区域
683浏览 • 1回复 待解决
panel组件点击区域问题
5019浏览 • 1回复 待解决
绑定菜单无法使用右键触发菜单
1951浏览 • 1回复 待解决
HarmonyOS 长按桌面图标展开菜单
33浏览 • 1回复 待解决