【问题标题】:Detecting support for beginElement()检测对 beginElement() 的支持
【发布时间】:2014-10-13 19:16:53
【问题描述】:

我正在使用beginElement() 在我的网络应用程序中启动 SVG 动画:

document.getElementById("item").beginElement();

但这会在 IE9 及更高版本(doesn't support it)中导致以下错误:

Object doesn't support property or method 'beginElement'

我不介意动画在 IE9 中不起作用,但我需要防止错误发生。如何设置检查以使 beginElement() 仅在浏览器支持时才被调用?例如:

if (hasSupport) {
    document.getElementById("item").beginElement();
}

我尝试了一种检测技术like this

return !!document.getElementById("item").beginElement();

但这总是返回false,即使在我知道支持它的浏览器中(如Firefox)。

我也研究过使用Modernizr,但它没有测试beginElement()

【问题讨论】:

  • Modernizr 对SMIL 进行了测试,您可以使用它,尽管它更通用一些。但是,如果 SMIL 也不支持,那么检查 beginElement 没有任何意义。

标签: animation svg internet-explorer-9 modernizr feature-detection


【解决方案1】:

您可以在执行之前嗅探该方法以查看它是否存在。

var item = document.getElementById("item");

if ('beginElement' in item) {
    item.beginElement();
}

Modernizr 使用in 形式,但if (item.beginElement) 的工作原理相同。

【讨论】:

    猜你喜欢
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 2014-05-15
    • 2013-09-29
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多