2

拡張機能 (特に Chrome の拡張機能に重点を置いています) では、ページに挿入された css 識別子とクラスが、ページ上の他の要素と競合する可能性があります。

拡張子の接頭辞を付けて名前を定義しようとしていますが、完全にはわかりません。では、css id/classes の名前を正確に定義する方法はありますか?

4

1 に答える 1

1

「完全に確実」が要件である場合、それは不可能です。誰かがあなたの拡張機能をいつでもダウンロードし、あなたが使用しているクラス名を見て、Web サイトの CSS を変更してあなたのクラス名と衝突する (または上書きしようとする可能性が高い) 可能性があります。これは機能であり、バグではありません。拡張機能は Web ページを拡張するため、DOM と組み合わせたり変更したりできるはずです。

他の人が自分のシステムと意図的に競合しないシステムを発明したい場合は、Java 名前空間スキームを使用してみませんか? 自分が所有するドメインを取得し、com-example-myclassname のように接頭辞として使用しますか? 拡張機能の ID またはランダムに生成された SHA-1 16 進コード ハッシュのいずれかは、わずかに読みにくく、安全性も高くありません。

  • abcdefghijklmnop-myclassname
  • da39a3ee5e6b4b0d3255bfef95601890afd80709-myclassname

通常、CSS は Chrome 拡張機能やアプリでは動的ではないため、ここでは意図的に動的ソリューションを含めていません。さらに、CSP はおそらく、このアプローチを単純なものにするでしょう (これは良いことです)。

于 2013-03-19T03:16:25.797 に答える