0

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

在头部,我链接到 aa 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;}
4

2 回答 2

2

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

阅读此问题以了解如何使用 Javascript 访问 <noscript> 的内容


否则,您可以为 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 版本。

于 2012-10-08T09:03:31.027 回答
1

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

HTML5 草案一般建议不要使用noscript:“noscript 元素是一种生硬的工具。有时,可能会启用脚本,但由于某种原因,页面的脚本可能会失败。出于这个原因,通常最好避免使用 noscript,而是设计脚本以将页面从无脚本页面更改为运行中的脚本页面”(下面是一个示例)。

所以最好的方法是渐进式增强:首先设计页面,这样它就可以在没有脚本的情况下工作。然后,以非中断方式添加脚本。这可能涉及通过脚本添加一些 CSS 规则(这比删除一些更自然)。

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

顺便说一句,我的好旧的 Android 2.3.5 默认浏览器似乎很荣幸noscript在里面head

于 2012-10-08T10:24:27.257 回答