我试图为一个特定的函数编写测试,该函数接受所选文本并通过给它一个特定的css类来突出显示它。该功能运行正常,测试在通过Chrome运行时通过,但在使用PhantomJS运行测试时,它会失败。似乎Node.contains()
在PhantomJS中返回了不正确的值,这就是测试失败的原因。以下是相关代码:
var range = window.getSelection().getRangeAt(0);
var parent = document.getElementById('text-container-items');
console.log(parent);
console.log(range.startContainer);
console.log(range.endContainer);
console.log(parent.contains(range.startContainer));
console.log(parent.contains(range.endContainer));
if (!parent.contains(range.startContainer) || !parent.contains(range.endContainer)) {
console.log('Returned early');
return;
}
以下是每个console.log
语句的结果(使用PhantomJS运行测试时):
的console.log(父)
<div class="text-container-items" id="text-container-items" data-reactid=".38.1">
<div class="textBlock" data-reactid=".38.1.$0">
Lorem ipsum dolor sit amet
</div>
<div class="textBlock" data-reactid=".38.1.$1">
consectetur adipiscing elit
</div>
<div class="textBlock" data-reactid=".38.1.$2">
sed do eiusmod tempor incididunt
</div>
</div>
的console.log(range.startContainer)
Lorem ipsum dolor sit amet
的console.log(range.endContainer)
Lorem ipsum dolor sit amet
的console.log(parent.contains(range.startContainer))
false
的console.log(parent.contains(range.endContainer))
false
这些console.log
语句在Chrome中是相同的,除了最后两个,它们都打印true
。
那么...给出了什么? Node.contains()
只在PhantomJS中不起作用吗?或者我在这里遗漏了什么?