2

在扩展中(我主要关注 Chrome 的扩展),页面中注入的 css 标识符和类可能会与页面上的其他元素发生冲突。

我试图用扩展前缀来定义他们的名字,但这并不完全确定。那么,有没有办法准确地定义 css ids/classes 的名称?

4

1 回答 1

1

如果“完全确定”是您的要求,这是不可能的。有人总是可以下载您的扩展程序,查看您正在使用的类名,然后更改他们网站的 CSS 以与您的类名冲突(或更可能试图覆盖)您的类名。这是一个特性,而不是一个错误;扩展扩展了网页,因此它们应该能够与它们的 DOM 混合并改变它们。

如果您想发明一个其他人不会故意与您的系统发生冲突的系统,为什么不使用 Java 命名空间方案:取一个您拥有的域,并将其用作前缀,例如 com-example-myclassname?您的扩展程序的 ID 或随机生成的 SHA-1 十六进制编码散列的可读性稍差且不再安全:

  • abcdefghijklmnop-myclassname
  • da39a3ee5e6b4b0d3255bfef95601890afd80709-myclassname

我故意不在这里包含动态解决方案,因为 CSS 通常在 Chrome 扩展程序或应用程序中不是动态的。此外,CSP 可能会使这种方法变得简单(这是一件好事)。

于 2013-03-19T03:16:25.797 回答