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();
}

添加两个动作钩子:

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

我猜你的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 回答
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 是微软在他们接受的样式表方面更严格,以帮助提高安全性。

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

我不知道这是否对某人有帮助。至少对我来说是这样:

WordPress 将 p 标签包裹在我的简码周围,因为我在表单(和简码)中使用块元素,所以我在块元素中使用了块元素 - 这是不允许的。

删除包围的 p 解决了这个问题。

编辑:使用简码空段落修复删除 p

于 2012-10-22T08:40:23.043 回答