我必须更改 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/