远程内容 - 阻止CSS覆盖

时间:2013-04-04 21:40:05

标签: css

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

从概念上讲,用户会在其页面上创建一个具有特定ID的div(让我们称之为#34; myId"),并包含一个我控制的JavaScript文件,它基本上会将标记注入& #34; MYID"

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

我已经阅读了数百篇关于CSS特性的文章和主题,重要等等。阻止用户覆盖你的风格的唯一真正方法是使用iFrame。

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

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

有没有人对任何其他解决方案有任何见解?我看了一下LinkedIn是如何嵌入他们的" connect with linkedIn button"而且他们只是用一个重要的东西来包装每一个属性值(这个a)看起来超级hacky而且b)没有说明未申报的属性和值。)

1 个答案:

答案 0 :(得分:1)

你最关心的是!重要的是他们仍然可以使用!important关键字后来声明覆盖它。

你对iFrames是正确的。

所以你没有多少选择:

  • 一个选项是使用自定义的非通用包类名称添加您自己的CSS声明,以便用户覆盖它们的可能性非常小:

    .content h1

将成为

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