2011-08-05 5 views
14

これはSSL and mixed content due to CSS background imagesに関連していますが、その質問には受け入れられた回答がなく、私が求めているのはもう少し具体的です。背景イメージのためにIEで "混在コンテンツ"警告を避けるための規則は正確には何ですか?

HTTPSウェブサイトにアクセスしている状況によっては、要素に背景イメージのスタイルが指定されていると、IEは「混在コンテンツ」警告をスローします。私はあなたがスタイルシート内の参照を入れた場合、警告は例えば、

#someElement a { 
    width:11px; 
    height:11px; 
    display:block; 
    overflow:hidden; 
    background:url(../images/sprites_list.png) no-repeat; 
    cursor:hand; 
    cursor:pointer; 
    background-position:0px -72px; 
} 

が、回避することが可能とone forum referenceを見つけていないあなたは、ラ要素をインラインで作成しよう

$('#someElement').append("<a title='something' style='background: url(../images/sprites_list.png) no-repeat; ... // etc 

と実際これは私のために働く。私は絶対的なhttps URLを使用して相対的なものではなく、画像を参照しなければならないと言った人たちを見てきました。

実際の話は何ですか?いくつかの「公式な」説明があるのか​​、それともルールが何であるかを参照していますか?それとも、それに失敗した場合は、それに従うと警告を発することはほとんどあり得ない標準的なガイドラインがありますか?

+1

また、相対プロトコルも使用できます。http://paulirish.com/2010/the-protocol-relative-url/ – js1568

+0

興味深い。私はそれを調べます。しかし、これは静的CSSファイルであり、静的コンテンツの残りの絶対URLベースを「認識」していないため、相対URLが本当に必要です。 – Dan

+1

JavaScriptを使用して背景画像を設定している場合は、この特定のIE8バグを回避するために、FYI、プロトコル相対URL _は使用できません。 JSスタイルの操作を行うときに、IE8の混在コンテンツの警告を避けるためには、スキームとホストを含​​む完全なURLを使用する必要があります。 ( 'element.style.backgroundImage =" //example.com/foo.png "'は警告します。) medmunds

答えて

10

完全修飾URIを使用すると、IE8以下の問題を回避し、誤ってabout:/relative/file.pngのような偽のURIを作成し、混在コンテンツの警告をトリガーします。この問題はIE9で修正されました。

+0

ありがとう、これは私が探している答えです。しかし、正確には「約:相対的」とは何ですか?私はこれまで知らなかった。 Biddy Fiddlerとのすばらしい仕事 - 私のIE 7と8のテストでは救い主です。 – Dan

+0

私は、「相対的」は、Ericの擬似コードであり、任意の相対的なパスであると思います。ですから、 "/path/to/file.ext"と入力すると、IEはそれを "about:/path/to/file.ext"に変えてしまいます。これは明らかに愚かです。 – Tom

+0

@Tomが正しいです。問題は、相対URIが一時的な:空白のマークアップと結合してしまうことです。ですから、about:blank + /path/to/file.extは、about:/path/to/file.extを生成します。これは、安全でないと誤って扱われます。 – EricLaw

0

私は、IEの読み込み時に違反したURLが基本文書に存在しないため、1つの方法が「安全」であるためではありません。ページがロードされた後にスクリプトを記述するのではなく、ドキュメントに直接Aを置くことをお勧めします。

私の診断が正しい場合、これは混在したコンテンツに関する規則に未だ文書化されていない特質がないことを意味します。

また、プロトコルに基づくURLは素晴らしいです。まあまあ。

+0

したがって、そのリンクがHTTPSであっても、インラインコンテンツに新しい参照を追加することはできません。もしそれがルールなら、私はそれと一緒に暮らすことができるかもしれませんが、私はいくつかの確認をしたいと思います。また、それがルールの場合、なぜ私がHTMLに追加する通常の ''タグにも影響しませんか? – Dan

+0

私はあなたがそれをしてはいけないと言っているまでは行っていません。私はちょうどそれがあなたが見ている異なった行動を説明すると思う。 65Fbef05にあなたのコメントを読んで、私は少し難解です。 – Tom

0

同じ問題の無数の時間の後、私は問題を把握できませんでした。私はソースコードを拾い始め、見つけました。私はHTML5を使用しています.HTML5要素をIE8で動作させるために、条件付きコメントの内側にshivを使用しています。

<!--[if lte IE 8]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]--> 

私の問題は、IE8でエラーが発生していたことです。私はそれをテストしていない

<!--[if lte IE 8]><script src="https://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]--> 

が、私はあまりにもうまくいくかもしれない、次の想像:その問題は次のように、HTTPSに上記変更することで解決しました。

<!--[if lte IE 8]><script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]--> 

道路に人を救うかもしれない。そうでなければ、幸運!

関連する問題