如何从 JavaScript 检测 MathML 标签支持(、)?
我可以通过以下方式检测 MathML 支持:
var e = document.createElement('div');
e.innerHTML = '<math></math>';
var mathMLSupported = e.firstChild && "namespaceURI" in e.firstChild && e.firstChild.namespaceURI == 'http://www.w3.org/1998/Math/MathML';
但是如何检测对
和
的支持?
I can detect MathML support with:
var e = document.createElement('div');
e.innerHTML = '<math></math>';
var mathMLSupported = e.firstChild && "namespaceURI" in e.firstChild && e.firstChild.namespaceURI == 'http://www.w3.org/1998/Math/MathML';
but how to detect support for <mfrac>
and <mtable>
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用 Element#getBoundingClientRect
使用
window.getCompulatedStyle
(在夜间模式下的 Mi 浏览器中不起作用,因为它将颜色更改为 rgba(255, 255, 255, 0.5))
使用
Element.querySelector(":link")
:(Safari 10+、Firefox ?+)使用 window.MathMLElement != null (该接口已在 MathML 4 规范中添加)
With
Element#getBoundingClientRect
With
window.getComputedStyle
(does not work in Mi Browser in Night Mode as it changes color to rgba(255, 255, 255, 0.5))
With
Element.querySelector(":link")
: (Safari 10+, Firefox ?+)With window.MathMLElement != null (the interface was added in MathML 4 spec)
在 jqmath 中,我构造了一个隐藏的
元素并进行比较其计算高度与非分数的高度。实际代码请参阅 jqmath-0.1.js 中的 M.checkMathML 函数。由于尝试使用或不使用 XML 命名空间(取决于浏览器),并允许 Internet Explorer 的 MathPlayer 插件使用命名空间前缀,这有点复杂。In jqmath, I construct a hidden
<mfrac>
element and compare its computed height to that of a non-fraction. See the M.checkMathML function in jqmath-0.1.js for actual code. It is complicated a bit by trying to work with or without XML namespaces (depending on the browser), and allowing for a namespace prefix for the MathPlayer plugin for Internet Explorer.遵循本文档的浏览器必须实现多个属性(也称为绑定)对于 DOM 中的特定 MathML 元素。因此,您可以简单地创建一个 MathML mtable 元素并检查浏览器是否添加了例如
rowalign
属性:Following this document conforming browsers must implement several properties (a.k.a. bindings) for specific MathML elements in the DOM. You can therefore simply create a MathML mtable element and check, if the browser adds, e.g., the
rowalign
property:这似乎仍然不是直截了当的。
http://www.w3.org/TR/MathML2/chapter8.html
可以通过使用测试字符串“org.w3c.dom.mathml”调用 DOMImplementation::hasFeature 方法来查询对 MathML 文档对象模型的支持
这意味着一个简单的测试,但是 Chrome 和 IE 通过以下方式支持此操作插件,但 Chrome 即使没有插件也会返回 true
我的解决方案是使用 w3c 规范,但对于浏览器 [chrome] 必须做出相反响应的情况是正确的。然后,如果有必要,我可以使用 MathJax,除了 Firefox 之外,总是如此。该脚本位于 html <头>部分
我并没有真正考虑安装浏览器插件,因为并不是每个人都安装了它们。
这适用于 IE 8、Chrome 39、Firefox 38、Komodo Edit 6
This still does not seem to be straight forward.
http://www.w3.org/TR/MathML2/chapter8.html
Support for the MathML Document Object Model may be queried by calling the DOMImplementation::hasFeature method with the test string "org.w3c.dom.mathml"
This implies a simple test however Chrome and IE support this through plug ins, but Chrome returns true even when it has no plug-in
My solution is to use the w3c spec but correct for cases where the browser [chrome] has to opposite response. Then I can use MathJax if necessary, which is always, except for firefox. The script goes in the html < head > section
I didn't really look into installing the browser plugins, because not everyone has them installed.
This works in IE 8, Chrome 39, Firefox 38, Komodo Edit 6