flutter_web检测鼠标悬停,然后单击htmlelementview中

发布于 2025-02-08 09:03:21 字数 1018 浏览 2 评论 0原文

我正在使用Flutter Web来解析一些网站。 我需要检测鼠标悬停,然后单击htmlelementview,然后获取相应的元素。我试图听onmouseup(),但它不起作用。你能给我建议吗?

Widget myfunc(){
      ui.platformViewRegistry.registerViewFactory(
          'my-html',
            (int viewId) => IFrameElement()
          ..style.border = 'none'
          ..srcdoc = webData
          ..onMouseUp.listen((event) {
            print('onMouseUp => $event');
          })
          ..onSelect.listen((event) {
            print('onSelect => $event');
          })
          ..onMouseDown.listen((event) {
            print('onMouseDown=> $event');
          })
          ..onMouseEnter.listen((event) {
            print('onMouseEnter => $event');
          })
      );

return HtmlElementView(
          viewType:'my-html',
        );
}

我计划关注这篇文章以提取元素,但仅在HTMLElementView()之外使用。 如何获取所选文本或DART中的内html

I am using flutter web to parse some website.
I need to detect the mouse hover and click inside a htmlElementView and then get the corresponded element. I tried to listen the onMouseUp() but it didn't work. can you give me advise?

Widget myfunc(){
      ui.platformViewRegistry.registerViewFactory(
          'my-html',
            (int viewId) => IFrameElement()
          ..style.border = 'none'
          ..srcdoc = webData
          ..onMouseUp.listen((event) {
            print('onMouseUp => $event');
          })
          ..onSelect.listen((event) {
            print('onSelect => $event');
          })
          ..onMouseDown.listen((event) {
            print('onMouseDown=> $event');
          })
          ..onMouseEnter.listen((event) {
            print('onMouseEnter => $event');
          })
      );

return HtmlElementView(
          viewType:'my-html',
        );
}

I plan to follow this post to extract the element, but it only work outside of htmlElementView().
How to get the selected text or the inner html in Dart

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

任性一次 2025-02-15 09:03:22

我没有发现什么问题,但我将遵循的解决方案作为替代方法。

我插入JavaScript,然后在飞镖一侧收听postmessage()。

步骤1。在HTML中添加Postmessage()。我解析整个Web HTML并插入活动。

var newElement = html.Element.html(element.outerHtml);
      print('newElement=> ${newElement.outerHtml}');
      newElement.attributes['onmouseover'] = 'window.parent.postMessage(this.id, \'*\')';

步骤2。在飞镖一侧添加侦听器。

  @override
  void initState(){
    super.initState();
    html.window.onMessage.listen( listen);
  }
  void listen(dynamic event) {
    print('listen...');
    var data = (event as html.MessageEvent).data;
    print(data);
  }

I don't find what is wrong but I use followed solution as an alternate.

I insert the JavaScript and listen to postMessage() on Dart side.

Step 1. add postMessage() in the HTML. I parse entire web HTML and insert the event.

var newElement = html.Element.html(element.outerHtml);
      print('newElement=> ${newElement.outerHtml}');
      newElement.attributes['onmouseover'] = 'window.parent.postMessage(this.id, \'*\')';

Step 2. Add the listener on the Dart side.

  @override
  void initState(){
    super.initState();
    html.window.onMessage.listen( listen);
  }
  void listen(dynamic event) {
    print('listen...');
    var data = (event as html.MessageEvent).data;
    print(data);
  }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文