【问题标题】:Mobile browser ignoring markup and script areas (Webkit, Android)忽略标记和脚本区域的移动浏览器(Webkit、Android)
【发布时间】:2011-01-28 02:02:20
【问题描述】:

我正在开发 Web 应用程序(C# MVC 应用程序),其中视图引擎在检测到移动浏览器时呈现不同的视图页面。特别是我的目标是 Android 网络工具包浏览器(在 Froyo 上)。奇怪的是页面确实在 iPhone 上正确呈现。

问题是,当我在模拟器上进行本地测试时,它呈现良好,如果我在桌面上使用 Chrome,它呈现良好......但是,当我在实际手机(Nexus 1 和 MyTouch)上测试时,标记是被忽略,所有文本节点都呈现为文本。使用 HTML5 DOCTYPE(即使使用最简单的标记)会发生这种情况。如果我在标签中插入一个 xmlns 属性(xmlns="http://www.w3.org/1999/xhtml"),它会注意标记,但这会带来它自己的一系列问题(最具体地说,它似乎不使用 JQuery Moblie),我更愿意省略命名空间。

另外,就像在黑暗中拍摄一样,我明确地将内容类型设置为 text/html 以查看是否有帮助,但没有运气。我说我是用 C# 写的,但 Web 服务器是 IIS,相信大家都明白了。

即使是这个简单的标记也不起作用:

<html>
<head>
<title>html5 test for android</title>
</head>
<body>
<h1>h1 markup</h1>
<h2>h2 markup</h2>

<p>this is a paragraph of text</p>
</body>
</html>

我是移动网络开发领域的新手 - 所以我希望这是一个如此简单和无脑的问题,除了我之外的每个人都知道(这就是为什么我没有运气找到任何方向网络)。

感谢您的帮助!

【问题讨论】:

  • 一个示例 http 响应文本会很有用(页面源和 http 标头的纯文本。)
  • 看看编码 - 现在你应该使用 utf8。
  • 我在服务器响应中专门将内容类型设置为“text/html”,并将编码设置为 UTF-8——但这并没有什么不同。使用我在上面的帖子中包含的标记,浏览器会输出一行纯文本,显示浏览器中包含的所有文本(无标记)。从服务器返回的 HTML 与帖子中的内容相同。我不知道查看返回到 android 浏览器的 http 标头的好方法(有什么建议吗?)

标签: android html mobile jquery-mobile


【解决方案1】:

Android 网络浏览器应该能够使用 HTML5。上面的代码只是普通的旧 HTML。您应该将 HTML5 文档类型按如下方式放在那里:

如果这仍然不起作用,我认为您对 ASP.NET 的浏览器功能嗅探问题存在一些问题。至于 jQuery,如果浏览器可以支持 HTML5,不妨尝试使用成熟的 jQuery。我知道它适用于 Android 手机,因为我已经在 Android 模拟器上对其进行了测试。首先尝试查看 ASP.NET 浏览器功能,因为如果 ASP.NET 无法定义它正在处理的浏览器和/或设备类型,它可能会降低 Android webkit 浏览器的浏览器功能。除此之外,您可以尝试编写非服务器页面(纯 HTML 文件)并查看该页面是否正确呈现。另外,请尝试使用常规的 jQuery 1.4.x 而不是移动版本。

【讨论】:

  • FWIW,JQuery mobile 需要常规的 JQuery 库,并且我已经包含了 标记(尽管我没有在示例中使用它)。正如我在帖子中提到的,页面在模拟器中正确呈现,而不是在实际手机上。这些页面是用 ASP.NET MVC 编写的,因此,控件的降级可能不是问题(此外,使用我在帖子中包含的标记非常简单)。接下来我将尝试渲染一个平面 html 页面。
  • 碰巧......我想在我要吃的乌鸦上加一点盐(也许还有一些莎莎酱)。事实证明,虽然不是浏览器功能,但它是一个类似的问题(根据 Hanselmann 的帖子使用 mobile.browser 文件)导致该问题。虽然我明确地设置了内容类型,但事实证明服务器正在覆盖我的更改)。该文件指定首选的 mime 类型是 application/xhtml + xml 而不是 text/html。感谢您的帮助。
【解决方案2】:

问题原来是使用了 mobile.browser 文件(来自 CodePlex)。该文件指示服务器我的 android 浏览器的首选 mime 类型是 application/xhtml+xml 而不是 text/html。在控制器的操作方法中设置内容类型并没有解决问题。我们最终在页面指令中明确设置了内容类型。我们可能会重新审视这个解决方案,以确定 mobile.browser 文件是否是我们将继续使用的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 2015-02-15
    • 2014-09-16
    • 2013-06-02
    • 2011-02-18
    • 2013-12-10
    • 1970-01-01
    相关资源
    最近更新 更多