1

我正在开发一个允许用户将内容嵌入到他们有权访问的网页中的系统。

从概念上讲,用户将在他们的页面上创建一个具有特定 ID(我们称之为“myId”)的 div,并包含一个我控制的 JavaScript 文件,该文件基本上会将标记注入“myId”。

返回的标记将包括带有内联样式的 div。我不能允许将此内容嵌入其页面的用户覆盖 CSS 样式。

我已经阅读了数百篇关于 CSS 特殊性、!Important 等的文章和线程。似乎阻止用户覆盖您的样式的唯一真正方法是使用 iFrame。

以下是一些同事的三篇文章,我一直在弹跳。 http://weblog.bocoup.com/3pjs-css-defense/ https://speakerdeck.com/antonkovalyov/achieving-harmony-with-third-party-javascript http://weblog.bocoup.com/3pjs-css -交货/

其中一个担忧是 iOS 将停止支持 iFrame,老实说,多年来我们都被告知不要使用 iFrame。虽然它看起来是完美且唯一的解决方案,但它确实听起来“hacky”。

有没有人对任何其他解决方案有任何见解?我查看了linkedIn如何嵌入他们的“与linkedIn按钮连接”,他们只是用一个!important(a)看起来超级hacky并且b)不考虑未声明的属性和值)包装每个属性值。

4

1 回答 1

1

您对 !important 的主要关注是他们仍然可以使用 !important 关键字在以后的声明中覆盖它。

您对 iFrame 的看法是正确的。

所以你没有很多选择:

  • 一种选择是在您自己的 CSS 声明之前添加一个自定义的非通用包类名称,这样用户覆盖它们的机会就会非常渺茫:

    . 内容 h1

会变成

.my-custom-css .content h1
  • 另一种选择是修改他们的 CSS 降价而不是你的。在他们的每个声明前面加上一个特定的 css 类,并将该类用于他们的 div 容器,以便它适用于它的所有内容。
于 2013-04-04T22:05:47.613 回答