3

私のプラグインは動的 CSS をフロントページに追加します。

function form_css() {
    header( 'Content-Type: text/css' );
    header( 'Expires: Thu, 31 Dec 2050 23:59:59 GMT' );
    header( 'Pragma: cache' );

    if ( false === ( $css = get_transient( 'mymail_form_css' ) ) ) {
        // generate CSS here
        set_transient( 'mymail_form_css', $css );
    }

    echo $css;
    die();
}

2 つのアクション フックを追加します。

add_action('wp_ajax_my_css', 'form_css');
add_action('wp_ajax_nopriv_my_css', 'form_css');

スタイルをエンキューします。

wp_register_style('my-css', admin_url('admin-ajax.php?action=my_css'));
wp_enqueue_style('my-css');

これは、IE9 を除くすべてのブラウザー (IE7+8 を含む) で完全に機能します。

この問題を検索し、X-Content-Type-Options: nosniffヘッダーについて見つけましたが、追加header( 'X-Content-Type-Options: nosniff' )しても問題は解決しません。

どんな助けでも親切に感謝します

4

3 に答える 3

0

これが誰かに役立つかどうかはわかりません。少なくとも私にとってはそうです:

WordPress はショートコードを p タグで囲みます。フォーム (およびショートコード) でブロック要素を使用しているため、ブロック要素内に要素をブロックしていますが、これは許可されていません。

囲まれた p を削除すると、問題が解決します。

編集:ショートコードの空の段落修正を使用して、pを削除します

于 2012-10-22T08:40:23.043 に答える
0

IE9を「互換性ビュー」に強制するためのより簡単な答え。

理由の詳細については、http://blogs.msdn.com/b/ieinternals/archive/2011/03/27/http-406-not-acceptable-php-ie9-standards-mode-accepts-only-text_2f00_css-forを参照してください。 -stylesheets.aspx - しかし、tldr は、Microsoft がセキュリティを向上させるためにスタイル シートとして受け入れるものをより厳格にしていることです。

Internet Explorer 9 ユーザーは、サイトを互換表示にすることで、サイトのバグを回避できます。互換表示では、IE は、サブダウンロード要求に対して任意の MIME タイプを受け入れると主張する従来の動作に戻り、サーバーは問題なく応答を返します。

でモードを変更できます

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" >

または、それでも失敗する場合は、IE8 にドロップします

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" >

また

<meta http-equiv="X-UA-Compatible" content="IE=IE8" >

それを HTML ヘッダーに入れます - IE のみに影響します。

于 2012-10-21T13:04:06.620 に答える
0

あなたのcssはphpファイルだと思いますか?style.css.phpのようなものですか?

http://blog.s9y.org/archives/227-IE9-has-trouble-with-CSS-Content-Types.html - 多分これはあなたを助けることができます.....

mod_negotiate は基本的に PHP ファイルを適切に実行し、有効な CSS を返します。

于 2012-10-21T12:52:38.380 に答える