由海豚阅读的noscript部分

时间:2012-10-08 08:46:21

标签: html css noscript dolphin-browser

海豚浏览器和默认Android浏览器正在阅读我页面顶部的<noscript>部分,即使在这些浏览器中启用了javascript。这会导致这些页面的内容无法呈现。

在头部,我链接到一个css样式表,当浏览器中关闭javascript时,该页面上的div内的任何内容都将显示设置为none。它通过驻留在nonscript元素中来实现,因此只有在没有javascript时才会读取样式表。

这适用于我测试过的所有台式机/笔记本电脑浏览器(未在Mac上测试,我无法访问)。它适用于Android和Firefox和Opera。我只有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;}

2 个答案:

答案 0 :(得分:2)

也许您可以使用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版本。

答案 1 :(得分:1)

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

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

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

但是,如果您需要快速修复,可以考虑在link元素之后立即添加noscript元素,该元素包含用于立即删除该元素的代码来自文档树。

顺便说一下,我的旧版Android 2.3.5默认浏览器似乎尊重script内的noscript