Firefox SVG getBBox方法返回'NS_ERROR_FAILURE'错误分析

简介:

在SVG中,我们无法给Text元素设置Width和Height属性,因此无法直接获取Text元素的高和宽。如果想要给Text元素添加背景色,最简单的办法就是在Text元素的下面添加Rect,然后给Rect设置fill属性。如下面的代码:

<rect id="dateRectObj_0" x="1133" y="605" rx="10" ry="10" width="120" height="23" fill="#B57A5A" display="block"/>
<text id="dateObj_0" x="1143" y="625" font-size="20" display="block">2014-09-11</text>

  显示效果 

  但是如果Text元素的字体改变了,如何修改Rect元素的Width和Height属性的值呢?一个简单的办法是通过Text元素的getBBox()方法获取高和宽,代码如下:

var textElement = d3.select("#dateObj_0");
var bBox = textElement.getBBox();
d3.select("#dateRectObj_0").attr("width", bBox.width).attr("height", bBox.height);

  有关d3.js的使用可以查看官网http://d3js.org/getBBox()方法返回指定元素的最小边界,http://www.w3.org/TR/SVG/types.html#InterfaceSVGLocatable

  不过在Firefox浏览器上,该方法偶尔会返回'NS_ERROR_FAILURE'的错误。原因是当目标元素的display属性被设置为'none'时,Firefox认为此时无法获取到元素的边界值(元素没有在浏览器中渲染,因此返回值没有任何意义)。不过经测试IE和Chrome浏览器能正常工作。解决的办法不外乎是在调用该方法前先判断目标元素的display属性是否为'none'。

 


本文转自Jaxu博客园博客,原文链接:http://www.cnblogs.com/jaxu/p/4193456.html,如需转载请自行联系原作者

相关文章
|
4月前
|
Web App开发 前端开发
Chrome 浏览器插件 V3 版本 Manifest.json 文件中 Action 的类型(Types)、方法(Methods)和事件(Events)的属性和参数解析
Chrome 浏览器插件 V3 版本 Manifest.json 文件中 Action 的类型(Types)、方法(Methods)和事件(Events)的属性和参数解析
161 0
|
7月前
|
API Android开发 数据安全/隐私保护
解决android webview 加载http url 失败 net::ERR_CLEARTEXT_NOT_PERMITTED 错误
解决android webview 加载http url 失败 net::ERR_CLEARTEXT_NOT_PERMITTED 错误
269 0
微信分享报错 wxlog:Error:fail to load Keychain status:-25300 解决办法
微信分享报错 wxlog:Error:fail to load Keychain status:-25300 解决办法
1758 0
|
4月前
|
Web App开发 存储 缓存
Chrome 开发者工具 Network 里 Failed to load response data 提示消息的含义
Chrome 开发者工具 Network 里 Failed to load response data 提示消息的含义
189 0
|
5月前
|
Web App开发
Google Chrome 浏览器 119.0.6045.106 版本提示 STATUS_INVALID_IMAGE_HASH 崩溃
Google Chrome 浏览器 119.0.6045.106 版本提示 STATUS_INVALID_IMAGE_HASH 崩溃
71 0
|
3月前
|
JavaScript 前端开发 算法
【Node.js 版本过高】运行前端时,遇到错误 `Error: error:0308010C:digital envelope routines::unsupported`
【Node.js 版本过高】运行前端时,遇到错误 `Error: error:0308010C:digital envelope routines::unsupported`
82 0
|
7月前
|
Web App开发 网络协议 网络虚拟化
Chrome 开发者工具里观察到的错误消息 net - ERR_CONNECTION_RESET
Chrome 开发者工具里观察到的错误消息 net - ERR_CONNECTION_RESET
144 0
|
9月前
|
监控 Linux Apache
访问zabbix安装页面报错500,apache报错Call to undefined function mb_detect_encoding()
访问zabbix安装页面报错500,apache报错Call to undefined function mb_detect_encoding()
146 0
|
10月前
|
Web App开发 前端开发 JavaScript
DevTools 无法加载 SourceMap 错误:状态代码 404,net::ERR_HTTP_RESPONSE_CODE_FAILURE
DevTools 无法加载 SourceMap 错误:状态代码 404,net::ERR_HTTP_RESPONSE_CODE_FAILURE
205 0
|
10月前
|
PHP 计算机视觉
百度人脸识别php版本数组数组简写导致的{"readyState":4,,"status":500,"statusText":"Internal Error"}错误
百度人脸识别php版本数组数组简写导致的{"readyState":4,,"status":500,"statusText":"Internal Error"}错误
50 0