我使用PhantomJS 1.9.7和this D3.js树样本的修改版本,但需要对涉及使用其边界框的标签进行一些不同的计算。当我在getBBox()
DOM元素上调用text
时,我收到的值都是整数,而不是浮点数。
我把一个展示这个的例子放在一起:
Look at the following result in your browser,然后使用PhantomJS运行它并观察控制台输出:
var page = require('webpage').create();
page.onConsoleMessage = function(msg, lineNum, sourceId) {
console.log(msg);
};
page.onAlert = function() {
phantom.exit();
};
page.open('http://jsfiddle.net/99mAZ/4/');
对我来说,输出(截断)与Chrome一样:
{"x":10,"y":-6.40625,"width":60,"height":13.015625}
{"x":-49,"y":-6.40625,"width":39,"height":13.015625}
{"x":-41,"y":-6.40625,"width":31,"height":13.015625}
{"x":-39,"y":-6.40625,"width":29,"height":13.015625}
{"x":-29,"y":-6.40625,"width":19,"height":13.015625}
和Phantom一起:
{"x":10,"y":-7,"width":60,"height":13}
{"x":-49,"y":-7,"width":39,"height":13}
{"x":-41,"y":-7,"width":31,"height":13}
{"x":-39,"y":-7,"width":29,"height":13}
getBBox()
返回SVGRect。 SVGRect的interface被定义为返回所有浮点值。它们很可能是花车,但它们至少是圆形,在使用较大的单位(例如英寸)时,它们并没有多大用处。
有没有办法获得更高的精确度?
答案 0 :(得分:2)
直到最近一两年,大多数浏览器在整个像素分辨率下的定位概念都很少。由于它是如此新颖,因此很难在多个浏览器中获得这些值的完全一致性。
您使用的PhantomJS版本可能不支持子像素定位。我不确定是不是因为你有旧版本,或者它根本不受支持。