dolphin 正在阅读 noscript 部分

Posted

技术标签:

【中文标题】dolphin 正在阅读 noscript 部分【英文标题】:noscript section being read by dolphin 【发布时间】:2012-09-28 11:50:54 【问题描述】:

Dolphin 浏览器和默认 android 浏览器正在读取我页面顶部的 <noscript> 部分,即使在这些浏览器中打开了 javascript。这会导致这些页面的内容不被呈现。

在标题中,我链接到一个 css 样式表,当浏览器中关闭 javascript 时,该样式表将页面上 div 内的任何内容设置为无。它通过驻留在非脚本元素中来做到这一点,因此只有在没有 javascript 时才会读取样式表。

这适用于我测试的所有桌面/笔记本电脑浏览器(未在我无权访问的 mac 上测试)。它适用于带有 Firefox 和 Opera 的 Android。我只有 cyanongenmod 7,所以我没有 Google Chrome。

但是,对于 Dolphin 和默认的 Android 浏览器,它们会读取位于 noscript 部分的 css 样式表,并且几乎整个页面/站点都不会在这些浏览器中呈现。

我已经通过从头部删除样式表链接来证明这是正在发生的事情,并且页面在这些浏览器中正确呈现。

有没有办法让这些浏览器尊重 head 部分的 noscript 标签?

更新:这是使用 html5 - 头部中的 noscript 是允许的:http://www.w3.org/TR/html5/the-noscript-element.html#the-noscript-element

<!DOCTYPE html>
<html>
<head>
        <noscript>
            <link href="$facesContext.externalContext.requestContextPath/css/no_javascript.css" rel="stylesheet" type="text/css" />
            <!-- this link is being read even if javascript in enabled in dolphin -->
        </noscript>

</head>
<body>
    <noscript>
        stuff in this noscript element works correctly
    </noscript>

    <div class="no_javascript_disapear">

        page full of stuff not being rendered because 
        dolphin browser is not respecting the noscript 
        tags in the head.

    </div>
</body>
</html>

// css in the noscript tag:
.no_javascript_disapear display:none;

【问题讨论】:

【参考方案1】:

也许您可以使用 javascript 来删除该样式表?

阅读此问题以了解如何Access Contents of <noscript> with Javascript


否则,您可以在 no-js 样式表中添加标题:

<link title="noJsStylesheet"  href="....css" rel="stylesheet" type="text/css" />

并使用此功能将其删除:

for(i=0; (a = document.getElementsByTagName("link")[i]); i++) 
    if(a.getAttribute("title") == 'noJsStylesheet') a.disabled = true;

但我真的不确定它是否适用于这个特定的 Dolphin 版本。

【讨论】:

工作得很好,谢谢。这么多要学。我终于掌握了 jsf,接下来是 javascript。一次只能走一步。 :) 至少我可以查看您的代码并“得到它”。 :) 感谢帮助【参考方案2】:

根据作为 W3C 建议发布的 HTML 规范,noscript 元素只允许在 body 中使用。浏览器也可能在head 中允许它,但你不能指望它。只是说您使用 HTML5 并不会改变这一点;浏览器做他们做的事,有时可能会实现部分 HTML5 草稿。

HTML5 草案一般recommends against using noscript:“noscript 元素是一种钝器。有时,可能会启用脚本,但由于某种原因,页面的脚本可能会失败。出于这个原因,通常最好避免使用 noscript,而是设计脚本以将页面从无脚本页面动态更改为脚本页面”(下面是一个示例)。

因此,最好的方法是渐进式增强:首先设计页面,使其无需编写脚本即可工作。然后,以非中断方式添加脚本。这可能涉及通过脚本添加一些 CSS 规则(这比删除一些更自然)。

但如果您需要快速修复,您可以考虑在现在位于 noscript 内的 link 元素之后添加一个 script 元素,其中包含用于立即从文档树中删除该元素的代码。

顺便说一句,我的老式 Android 2.3.5 默认浏览器似乎在 head 内支持 noscript

【讨论】:

很好理解。我想做渐进式增强,但我正在从后端编程转向 web/前端 jsf。而这只是我。所以拳头我只需要得到一些工作。然后我可以让它优雅地增强或失败。 :) +1 收获

以上是关于dolphin 正在阅读 noscript 部分的主要内容,如果未能解决你的问题,请参考以下文章

如何解决dolphin模拟器部分游戏不能运行的问题

与 firefox NoScript 插件一起使用的 noscript 标签的替代品

noscript 仅显示在 Internet Explorer 中

标题中的 WP Woo <noscript> 需要删除

如何在 PHP 中的图像下方添加 noscript 标签?

如何使 <noscript> 元素可访问?