svg:Wrap<文本>在<a>使用javascript将显示白色页面(没有错误)
svg: Wrap <text> in <a> using javascript results in white page (no error)
我使用jasondavies的d3云来渲染标签云,它运行良好。但是,我也希望所有项目都是可点击的,最好的解决方案是将所有<text>
元素封装在xlink的a
元素中。下面是一个简单的例子:
<!DOCTYPE html>
<html dir="ltr" lang="en-US">
<body>
<svg height="60" width="125">
<g transform="translate(62,30)">
<text transform="translate(20,8)rotate(0)" text-anchor="middle" style="font-size: 100px; font-family: Impact; fill: rgb(31, 119, 180);">text</text>
</g>
</svg>
<script>
window.setTimeout(function(){
var ns = 'http://www.w3.org/1999/xlink';
document.querySelector('svg').setAttribute('xmlns:xlink', ns);
var el = document.querySelectorAll('g text').item(0);
var w = document.createElementNS(ns, 'a');
w.setAttributeNS(ns, 'xlink:href', '/test/'+ el.textContent);
w.setAttributeNS(ns, 'target', '_top');
w.appendChild(el.cloneNode(true));
el.parentNode.replaceChild(w, el);
}, 1000);
</script>
</body>
</html>
然而,这会导致文本元素变得不可见(在Firefox和Chrome中)。奇怪的是,如果我使用DOM检查器复制生成的SVG,并将其粘贴到一个单独的文件中;它运行良好。
我目前已经通过添加onclick处理程序来解决问题,但这还远远不够完美。
您需要为链接指定SVG命名空间,否则a
元素将无法正确解释:
var w = document.createElementNS(d3.ns.prefix.svg, 'a');
// etc
相关文章:
- 正在检测导航到<a name=“;最新主题”></a>
- 如何附加<ul><李>元素位于某个特定条件的父元素列表之间
- 在<script src=“"></脚本>标签
- 等效于<script src=“;something1.json”></脚本>
- CSS/.JS问题,<ul><李>在Megamenu中
- 如何在<td></td>在Procractor中
- 显示“<script src='some.js'></脚本>"在Html文档中
- 如何将Array转换为<ul><李>以字母为标题的字母列表
- <script src=“//代码.jquery.com/jquery-1.11.1.min.js”></
- 选择<脚本></脚本>作为html正文中的纯文本
- 可折叠<UL><李>不起作用
- $.mobile.loadPage()和$(“linkBtn”).click();t负载<头部></头部&
- <脚本/>vs<脚本></脚本>webpack和angular
- Javascript/RRails-如何包装link_to而不是<a></a>在javascript
- jQuery在处理<选择><选项>
- 布局lt md已被弃用.请使用`layout gt-<xxx>`变种
- 在<%%中定义的访问变量>从<脚本></脚本>
- 页面设计<a href><按钮><输入>在JSP中
- 注入html标记<ul></ul>在我的<李></李>元素
- jQuery选择器<按钮></按钮>