Node.contains()在PhantomJS上返回不正确的值,但不在Chrome

时间:2015-07-22 21:38:32

标签: javascript google-chrome dom phantomjs

我试图为一个特定的函数编写测试,该函数接受所选文本并通过给它一个特定的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中不起作用吗?或者我在这里遗漏了什么?

0 个答案:

没有答案