javascript - 从 iframe 获取文本并设置范围

标签 javascript html iframe range

我必须更改 iframe 中显示的 HTML 文档中部分文本的样式。

我有一个 json 文件,其中有应该修改的文本的开始/结束/id。

我的问题是我无法设置文本范围。

 var r = document.createRange();
 var node = document.getElementById("file").contentWindow.document.getElementById("d1e152");
 r.setStart(node, 0);
 r.setEnd(node, 12);

file是iframe的id,而d1e152是段落的id。 它返回“TypeError:Range.setStart 的参数 1 不是对象。” r.setStart() 行出错。

最佳答案

听起来 node 为空。这可能是出于多种原因之一,但我猜您正在尝试在 iframe 完全加载之前检索 iframe 中的元素,因此您需要使用 window.setTimeout() 或事件处理程序。

另一个不是当前问题的问题是,最好在 iframe 文档而不是主文档上创建范围。根据the spec这应该不重要,但我确实在旧浏览器中看到了问题。现在不记得具体内容了。

var iframeDoc = document.getElementById("file").contentWindow.document;
var r = iframeDoc.createRange();
var node = iframeDoc.getElementById("d1e152");
r.setStart(node, 0);
r.setEnd(node, 12);

关于javascript - 从 iframe 获取文本并设置范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23739076/

相关文章:

javascript - 如何将表单放入 iframe 中? Visual Studio ,html

javascript - Iframe Resizer 未调整大小?

javascript - 上下滚动时淡入淡出元素

javascript - Polymer 跨元素共享样式

用于生成下拉菜单/删除下拉菜单的 JavaScript 函数

html - 在 HTML 中缩放绝对定位和 em 大小的元素时布局错位

html - 将一个 div 的宽度调整到另一个具有左右填充的 div 中

django - 升级到 Django 3.2 LTS 后 iframe 停止工作

javascript - .NET MVC/JS/JQUERY中的问答应用,如何防止作弊?

javascript - 与 HTML 和 Javascript 相关的数组问题