我想开始使用css --variables。对于旧版浏览器,css的后备方法是先声明旧版规则,这很好。但是,然后我将通过javascript处理它们。那么,它会破坏脚本并在旧版浏览器中引发一些错误吗?我问,因为我目前无法测试旧版,所以我自己看不到。
我的意思是,如果我做这样的事情:
elem.style.setProperty('--tx', `10px`);
旧版浏览器会发生什么?只是什么都没有(--tx不会自动更新,程序将继续运行),或者抛出错误并中断脚本?
最佳答案
根据the specification,setProperty()
可以在以下情况下抛出DOMException
:
SYNTAX_ERR:如果指定的值具有语法错误且不可分析,则引发。
NO_MODIFICATION_ALLOWED_ERR:如果此声明为只读或属性为只读,则引发。
如果希望安全起见,请将调用包装在try...catch
或基于Modernizr.customproperties
的条件中,以确保在旧版浏览器中引发异常时捕获该调用,或者仅在浏览器支持时调用该调用。
我还建议您不要使用template literals或使用Babel将其转换为ES5。