在扩展中(我主要关注 Chrome 的扩展),页面中注入的 css 标识符和类可能会与页面上的其他元素发生冲突。
我试图用扩展前缀来定义他们的名字,但这并不完全确定。那么,有没有办法准确地定义 css ids/classes 的名称?
在扩展中(我主要关注 Chrome 的扩展),页面中注入的 css 标识符和类可能会与页面上的其他元素发生冲突。
我试图用扩展前缀来定义他们的名字,但这并不完全确定。那么,有没有办法准确地定义 css ids/classes 的名称?
如果“完全确定”是您的要求,这是不可能的。有人总是可以下载您的扩展程序,查看您正在使用的类名,然后更改他们网站的 CSS 以与您的类名冲突(或更可能试图覆盖)您的类名。这是一个特性,而不是一个错误;扩展扩展了网页,因此它们应该能够与它们的 DOM 混合并改变它们。
如果您想发明一个其他人不会故意与您的系统发生冲突的系统,为什么不使用 Java 命名空间方案:取一个您拥有的域,并将其用作前缀,例如 com-example-myclassname?您的扩展程序的 ID 或随机生成的 SHA-1 十六进制编码散列的可读性稍差且不再安全:
我故意不在这里包含动态解决方案,因为 CSS 通常在 Chrome 扩展程序或应用程序中不是动态的。此外,CSP 可能会使这种方法变得简单(这是一件好事)。