1

私は、ユーザーがアクセスできる Web ページにコンテンツを埋め込むことができるシステムに取り組んでいます。

概念的には、ユーザーは自分のページに特定の ID (「myId」と呼びましょう) を持つ div を作成し、基本的に「myId」にマークアップを挿入する私が制御する JavaScript ファイルを含めます。

返されるマークアップには、インライン スタイルを持つ div が含まれます。このコンテンツを自分のページに埋め込んでいるユーザーが CSS スタイルを上書きすることを許可できません。

CSS 固有性、!Important などに関する何百もの記事やスレッドを読みました。ユーザーがスタイルをオーバーライドできないようにする唯一の方法は、iFrame を使用することです。

以下は、数人の同僚と私が飛び回っている 3 つの記事です。 http://weblog.bocoup.com/3pjs-css-defense/ https://speakerdeck.com/antonkovalyov/achiving-harmony-with-third-party-javascript http://weblog.bocoup.com/3pjs-css -配達/

懸念の 1 つは、iOS が iFrame のサポートを停止することであり、正直なところ、私たちは長年 iFrame を使用しないように言われてきました。完璧で唯一の解決策のように見えますが、実際には「ハッキー」に聞こえます。

他のソリューションについて洞察を持っている人はいますか? 私は、linkedIn がどのように「linkedIn ボタンで接続」を埋め込むかを調べました。それらは単にすべてのプロパティ値を !important でラップしているだけです (a) 非常にハッキーに見え、b) 宣言されていないプロパティと値を考慮していません)。

4

1 に答える 1

1

!important に関する主な懸念は、!important キーワードを使用して、後で宣言をオーバーライドできることです。

あなたはiFrameについて正しいです。

したがって、多くのオプションが残されているわけではありません。

  • 1 つのオプションは、ユーザーがそれらをオーバーライドする可能性が非常に少なくなるように、独自の非汎用パッケージのような名前を独自の CSS 宣言の先頭に追加することです。

    .コンテンツ h1

となります

.my-custom-css .content h1
  • もう 1 つのオプションは、自分の代わりに CSS マークダウンを変更することです。各宣言の前に特定の css クラスを追加し、そのクラスを div コンテナーに使用して、そのすべてのコンテンツに適用されるようにします。
于 2013-04-04T22:05:47.613 に答える