WP8 上的 IE 10 忽略媒体查询?

2024-05-05

我正在开发一个使用媒体查询的网站。我可以在桌面浏览器中看到它们正常工作,但是当我在 WP8 设备上导航到该网站时,没有加载 CSS。我创建了一个非常简单的 HTML 页面来复制问题并显示我尝试过但无法正常工作的解决方案。

这是完整的代码:

<html>
    <head>
        <title>WP8 Test</title>

        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />

        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

        <style type="text/css">

            @-webkit-viewport{width:device-width}
            @-moz-viewport{width:device-width}
            @-ms-viewport{width:device-width}
            @-o-viewport{width:device-width}
            @viewport{width:device-width}

            @media screen and (min-width: 1024px) {
                body {
                    background-color: red;
                }
            }

            @media screen and (min-width: 768px) and (max-width: 1024px) {
                body {
                    background-color: blue;
                }
            }

            @media screen and (min-width: 480px) and (max-width: 768px) {
                body {
                    background-color: green;
                }
            }

            @media screen and (max-width: 480px) {
                body {
                    background-color: yellow;
                }
            }

        </style>

        <script type="text/javascript">

            if (navigator.userAgent.match(/IEMobile\/7\.0/)) {
                var msViewportStyle = document.createElement("style");
                msViewportStyle.appendChild(
                    document.createTextNode(
                        "@-ms-viewport{width:auto!important}"
                    )
                );
                document.getElementsByTagName("head")[0].
                    appendChild(msViewportStyle);
            }

        </script>

    </head>
    <body>
        text
    </body>
</html>

正如你所看到的,它非常简单,有 4 个不同的“断点”body的背景颜色会随着屏幕宽度的不同而改变。在注意到它在我的 WP8 设备(Lumia 822)上的 IE 中不起作用后,我开始在谷歌上搜索这个问题,这似乎是一个众所周知的问题。所以我找到并尝试过的解决方案来自这里:

http://timkadlec.com/2013/01/windows-phone-8-and-device-width/ http://timkadlec.com/2013/01/windows-phone-8-and-device-width/

这看起来非常简单,因为我将五行添加到 CSS 顶部:

@-webkit-viewport{width:device-width}
@-moz-viewport{width:device-width}
@-ms-viewport{width:device-width}
@-o-viewport{width:device-width}
@viewport{width:device-width}

然后添加一些JS来从UA中检测IE Mobile浏览器。我对此有两个问题:

首先-当我alert我的用户代理字符串,我从 WP8 设备获取以下内容:

Mozilla/4.0(兼容;MSIE 7.0;Windows Phone OS 7.0;Trident/3.1;IEMobile/7.0;NOKIA;Lumia 822

根据上面的文章,并且本文 http://jonathanstark.com/blog/windows-phone-8-user-agent-string,应该改为 IEMobile/10.0。关于为什么我的不同有什么想法吗?这似乎是Windows Phone 7 用户代理字符串。为什么我的 WP8 设备会显示该信息?

由于这种差异,我必须更改 JS 以匹配 7.0 而不是 10,否则if条件永远不会得到满足。

因此,即使如此,使用上面的代码也没有任何反应,并且我的 WP8 设备上的屏幕加载为白色。谁能看到我做错了什么吗?

UPDATE:

JS 似乎抛出了一个错误:

意外调用方法或属性访问

所以我找到了一个解决方案,here https://stackoverflow.com/questions/436710/element-appendchild-chokes-in-ie:

if (navigator.userAgent.match(/IEMobile\/7\.0/)) { 
   var s = document.createElement("style");
   s.setAttribute('type', 'text/css');
   var cssText = "@-ms-viewport{width:auto!important}";
   if(s.styleSheet) { // IE does it this way
    s.styleSheet.cssText = cssText
   } else { // everyone else does it this way
    s.appendChild(document.createTextNode(cssText));
   }

document.getElementsByTagName("head")[0].appendChild(s);
} 

但是,即使现在代码成功执行,我的媒体查询仍然被忽略,并且我仍然看到白色页面加载。有任何想法吗?

更新2:

我又找到一篇文章,here http://mattstow.com/responsive-design-in-ie10-on-windows-phone-8.html(滚动到底部),从 GDR3 更新开始(我通过开发程序获得了更新):

好消息!微软已修复 WP8 Update 3 中的视口问题 (东德3)。

在 CSS @-ms-viewport 规则中使用设备宽度现在可以正确呈现 页面的设备宽度,而不是分辨率宽度。

因此,我再次尝试删除 Javascript,并仅将其添加到 CSS 顶部:

@-ms-viewport{
   width:device-width
}

但同样,没有 CSS 加载。

更新3:

看来我的用户代理可能是正确的。当我在 WP8 设备上导航到 Whatsmyuseragent.com 时,它会显示正确的 UA。当它报告错误的站点时,可能与它是本地 IIS 8.0 站点有关?如果是这种情况,我是否无法从 Windows Phone 本地测试我的网站?有人这样做过吗?


看起来您现在已经使用 bootstrap 对它进行了排序,但该网站可能出于某种原因启动了 EmulateIE7(为了兼容性)。看来 Lumia 也可以接受这一点,例如,如果你有<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />IE7 不支持标签,当然还有媒体查询。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WP8 上的 IE 10 忽略媒体查询? 的相关文章

随机推荐

  • IIS 或任何文件夹服务器 2012 R2 中不存在 adfs 目录的虚拟或物理位置

    我有一个完全可操作的联合身份验证服务器 Azure 同步 Office 365 同步和本地 配置的每个部分都完美运行 我遇到的问题是 没有任何 Web 目录文件的痕迹 我查看了每个位置 并且我的联合代理或联合服务器上不存在虚拟目录 我正在尝
  • 在 XAML GridView 中水平排序项目(Win8 / Metro)

    如何在 XAML 中对 GridView 的项目进行水平排序 遗憾的是我没有找到实现这一目标的方法 关键字 方向 不可用 这是我当前的 GridView
  • 更改Word文档中的文本字体颜色

    我写了一个小测试词插件 但找不到方法改变字体颜色一句话 这是我的代码 var wordsList this Application ActiveDocument Words wordsList i Font TextColor WdColo
  • 使用命令提示符查找 CPU 数量和每个 CPU 的核心数

    我正在尝试使用命令提示符检索 CPU 数量和每个 CPU 的核心数 我已经执行了以下命令 wmic cpu get NumberOfCores NumberOfLogicalProcessors Format List 我收到此错误 wmi
  • dojo中tabContainers的高度

    我正在使用 Dojo tabContainer 快速问题 你吗 have to如果您正在处理 Dojo 容器 请在 CSS 中指定小部件大小 以像素为单位 据我所知 让 TabContainer 实际显示的唯一方法是通过 CSS 为其指定绝
  • 关于在 Bootstrap 中对齐网格项的 CSS 指南

    我正在尝试显示项目网格 并且图片的高度和宽度都不同 并且细节可能长或短 导致页面上的换行符数量不同 This is what I want it to look like And here is what it actually looks
  • 如何完全禁用 Elixir/Phoenix 生成器和模型中的上下文?

    凤凰城有一个发电机 mix phx gen html Accounts User users name string age integer 我不想为我的模型使用上下文 也不想提供它的名称 如何禁用它 您仍然可以使用 1 2 及更早版本中的
  • 更改 Amazon RDS MYSQL Linux 服务器的 innodb_log_file_size 变量值

    我们正在使用 Amazon RDS linux 服务器作为 MYSQL 更改 my cnf 文件变量值的方法是什么 我正在尝试更改 innodb log file size 变量 您能告诉我哪一个是最好的改变方式吗 所以请帮我解决这个问题
  • 角度 2 |类型“{}”的指令参数不可分配给

    我是 Angular 2 的菜鸟 我正在做 YouTube 教程 但每个教程都有directives 我被困的部分 应用程序组件 ts import Component from angular core import HeaderComp
  • 设备锁定时,互联网音乐播放器无法加载歌曲(打瞌睡模式?)

    我正在构建一个音乐播放器 可以播放互联网上的歌曲 我注意到 通常 当一首歌曲结束并且必须加载另一首歌曲时 应用程序不会播放下一首歌曲 我等啊等 终于决定解锁手机以了解发生了什么 令人惊讶的是 设备解锁后立即开始播放以下歌曲 第一次我以为这只
  • 发起TCP连接关闭后如何接收数据?

    TCP 允许一侧发出 FIN 并让另一侧在结束其一侧的连接之前响应一些数据 我如何使用 NET 来实现这一点TcpClient 看来我必须使用Close发出FIN 但之后我不能再打电话Client Receive since Client被
  • 使用 jquery 更改具有嵌套内容的 div 的可见性,onclick

    我有一个链接列表 当单击其中一个链接时 我想更改与其关联的 div 的可见性 我的 html 如下所示 div ul li class active a href Link 1 a li li a href Link 2 a li li a
  • PyCurl 请求在执行时无限挂起

    我编写了一个脚本来从 Qualys 获取扫描结果 每周运行一次以收集指标 该脚本的第一部分涉及获取过去一周运行的每个扫描的引用列表以进行进一步处理 问题是 虽然有时这会完美地工作 但有时脚本会挂在c perform 线 手动运行脚本时这是可
  • 如何从 MWS 检索亚马逊退货商品

    我尝试获取每个订单的退回商品 但不幸的是 它似乎没有从亚马逊网络服务提供此类信息 public GetOrderResponse InvokeGetOrder Create a request GetOrderRequest request
  • 在 IconPageIndicator 中自定义填充和边距

    我正在尝试实现自定义 IconPageIndicator viewpager 我想自定义 com viewpagerindicator IconPageIndicator 中显示的图标的边距和填充 所以我编写了自定义 IconPageInd
  • 如何用泛型返回类型推断方法的具体返回类型?

    给出以下接口 interface Random extends java util function Supplier
  • 前景色中的 Alpha

    我想在标签控件中创建文本的淡入淡出效果 我更改了标签前景色中的 Alpha 值 但它不受影响 我在这里看到同样的问题 http phorums com au showthread php 190812 Alpha value of the
  • “android.enableUnitTestBinaryResources”已弃用[重复]

    这个问题在这里已经有答案了 我刚刚更新了我的 Android Studio 现在当我构建我的项目时 我收到此错误 选项 android enableUnitTestBinaryResources 已弃用 这 当前默认值为 假 已从当前版本中
  • Kubernetes Pod 中现在几点了?

    假设我有一些 NET Core 代码在 k8s pod 中运行 我要求 DateTime Now 我假设我将从运行 pod 的主机获取日期时间 有没有办法获得在 k8s 集群中一致的日期时间值 容器中的时钟与主机相同 因为它由内核控制 时区
  • WP8 上的 IE 10 忽略媒体查询?

    我正在开发一个使用媒体查询的网站 我可以在桌面浏览器中看到它们正常工作 但是当我在 WP8 设备上导航到该网站时 没有加载 CSS 我创建了一个非常简单的 HTML 页面来复制问题并显示我尝试过但无法正常工作的解决方案 这是完整的代码