前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Uncaught DOMException: Failed to execute ‘insertRule’ on ‘CSSStyleSheet’

Uncaught DOMException: Failed to execute ‘insertRule’ on ‘CSSStyleSheet’

作者头像
上山打老虎了
发布2022-06-14 21:52:12
2.1K0
发布2022-06-14 21:52:12
举报
文章被收录于专栏:ArticleArticle

Chrome 66 版本出现 Uncaught DOMException: Failed to execute ‘insertRule’ on ‘CSSStyleSheet’: Cannot access StyleSheet to insertRule 同样的页面在 Firefox 下是可以运行的。

经排查,最新版的 Chrome 对于 insertRule 的方式做了限制。

页面使用场景:JS 创建了一个 iframe 然后监听 iframe 的 DOMContentLoaded 事件,在回调函数里面去使用 document.styleSheets[0].insertRule。

Chrome 出于安全考虑对此作了隔离,取代方法:手动创建 style 标签插入

代码语言:javascript
复制
var css = 'body::-webkit-scrollbar-track-piece { background-color:#f5f5f5; } ' +
    'body::-webkit-scrollbar { width:3px; } ' +
    'body::-webkit-scrollbar-thumb { background:#ccc; } ' +
    'body::-webkit-scrollbar-thumb:hover { background:#999; }';
var head = elIframeDocument.head || elIframeDocument.getElementsByTagName('head')[0];
var style = elIframeDocument.createElement('style');
style.type = 'text/css';
if (style.styleSheet){
    style.styleSheet.cssText = css;
} else {
    style.appendChild(elIframeDocument.createTextNode(css));
}

head.appendChild(style);
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年04月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档