gpt4 book ai didi

cocoa - 确定 HTML 源中给定 WebKit 选择中的 DOMRange 的字符索引

转载 作者:行者123 更新时间:2023-12-03 16:48:12 24 4
gpt4 key购买 nike

我正在尝试同步 DOMRange (表示从 Cocoa WebView 中进行的用户选择)到当前在该 View 中呈现的原始 HTML 源,作为一种 Dreamweaver-split-editor:

Dreamweaver code-design splitview

我的第一个想法是获取 DOMRange 对象的 startContaineroffset并从那里沿着 DOM 树向上走,累积整个字符偏移量直到 body 标签。

不幸的是,这个任务存在一些问题:

  1. 显然,如果 DOM 是通过 Javascript 操作的,或者需要解析器来清理格式错误的标签,则文档的 externalHTML 将与原始 HTML 源不同。
  2. 我不知道如何获取节点在其父文本节点中的偏移量(例如,<p>some<div>target</div>text</p> 中的 target 的 4 个字符)和 normalize似乎并没有让这变得更容易。
  3. 尝试解决 #1 中的一些问题,或者只是从 HTML 源转到 WebView 可能需要单独解析 HTML,然后关联两个 DOM 树。

一线希望是 HTML5 指定了一种用于处理无效 HTML 的标准解析算法(WebKit 此后已采用该算法),因此理论上应该可以使用现成的 HTML5 解析器来生成相同的树作为 WebKit — 对吗?

这是我能找到的最相似的现有问题,但它的问题略有不同:
Getting source HTML from a WebView in Cocoa

最佳答案

你的问题#1实际上并没有那么糟糕;你可以关闭JS解释。

查看QWebSettings::JavascriptEnabled,或者在加载任何 html 之前将其放入:QWebSettings::globalSettings()->setAttribute(QWebSettings::JavascriptEnabled, false);

这应该会让你的 DOM 不被 JS 破坏。祝你好运!

关于cocoa - 确定 HTML 源中给定 WebKit 选择中的 DOMRange 的字符索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4938895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com