html - SVG 的 tabIndex 在 IE 和 React 中不起作用
问题描述
使用 react 组件时,svg文本元素的tabIndex在 IE11 和 Edge 中不起作用。
我期望使用 React 组件为 svg 中的文本元素执行按键事件。这似乎在 chrome 和 FF 中工作正常,但它在 IE11 和 Edge 中失败。
出于某种原因,当在 react 的 jsx 中设置时,在 IE 中未处理tabIndex属性,导致 svg 的文本没有焦点来执行按键操作。
<html>
<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.4.2/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.4.2/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.21.1/babel.min.js"></script>
<script type="text/babel">
class Greeting extends React.Component {
doSomething() {
alert("Keypress captured");
}
render() {
return (
<div>
<svg viewBox="0 -20 800 300">
<text fill="#273039" fontSize="25" width="150" tabIndex="0" onKeyPress={this.doSomething}>
<tspan>Type something here!</tspan>
</text>
</svg>
</div>
);
}
}
ReactDOM.render(
<Greeting />,
document.getElementById('root')
);
</script>
</html>
这是在 chrome 和 IE 中尝试的示例: https ://jsfiddle.net/pabloherre/nou8rc4e
你们有什么解决方法吗?或者似乎是一个错误?
解决方案
您可以focusable="true"
在<text>
标签中添加。
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.4.2/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/15.4.2/react-dom.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.21.1/babel.min.js"></script>
<div id="root"></div>
<script type="text/babel">
class Greeting extends React.Component {
doSomething() {
alert("Keypress captured");
}
render() {
return (
<div>
<svg viewBox="0 -20 800 300">
<text fill="#273039" fontSize="25" width="150" tabIndex="0" focusable="true" onKeyPress={this.doSomething}>
<tspan>Type something here!</tspan>
</text>
</svg>
</div>
);
}
}
ReactDOM.render(
<Greeting />,
document.getElementById('root')
);
</script>
推荐阅读
- c++ - 将 C++ 属性应用于函数指针
- android - 单击反应本机中的登录按钮后,我的应用程序立即在 android Emulator 上崩溃。但是在 iOS Simulator 上工作得很好
- python - 用python Standise双变量分布
- c++ - 有没有一种方法可以支持使用 c++ 在 libreoffice calc sdk 中显示汉字?
- javascript - JavaScript 2D 数组,如果输入 RegEx 匹配 col1 ,则返回 col2
- python - 进步
这一切都很好,但我想要做的是将我上传的文件的名称存储在隐藏的输入类型中,所以当我提交带有文本字段的表单时,图像的名称可以提交到数据库。
我注意到当我将主表单提交到数据库时,图像已保存到数据库中。我可以将它保存在一个名为“媒体”的临时文件夹中。但是,每当我编辑表单时,图像就无法再检
- java - 来自控制器 JSP 的错误响应
- python - 有没有办法可以在一个列标题下嵌套两列数据?
- javascript - 如何使用 javascipt 以编程方式(单击按钮)为 django-select2 字段设置值?
- amazon-web-services - Amazon Cloud - 目标组已删除