请考虑以下示例:
<noscript> <img class="photo" src="example.png"> </noscript>
客户端只有在禁用Javascript的情况下才能下载图像文件? (我知道客户端只能在此示例中禁用Javascript时看到该图像)
我问的原因是因为我已经在外部的CSS(避免http请求)中使用base64数据URI为几个背景图像属性.我也想通过使用外部Javascript更新其值来保留一些img标签的src值来使用base64数据URI(以保留缓存的优点).
本质上,这一切的重点是避免/限制http请求,所以我想知道如果我可以优雅地降级,只有在Javascript被禁用的情况下才能获取图像文件?还是下载的图像不管?
解决方法
HTML 4.01规范只是指出,在某些情况下,noscript的内容不会呈现.然而,这表明浏览器不应该在这种情况下基于其内容执行任何GET操作,因为这样的操作将是无意义的并且将降低效率.
HTML5草案更加明确,可能反映了实际的浏览器行为.它关于noscript
element,在一个强调的笔记:“它的作用是基本上”关闭“解析器,当脚本启用,使元素的内容被视为纯文本,而不是真正的元素”. (该注释涉及为什么noscript在使用XHTML语法时不起作用,但它也会显示其工作原理,当它工作时).
所以我们可以预期,当启用脚本时,noscript的内容甚至不会被解析(除了识别结束标记). Blender的回答似乎证实了这一点,而我的Firefox实验也是如此:
<img src=foo style="foo: 1"> <noscript> <img src=bar style="bla: 1"> </noscript>
当启用脚本时,Firefox会对foo造成失败的GET请求,但没有对bar的请求.另外,它显示一个关于错误的CSS代码foo的警告:1,在错误控制台中,但没有关于bla:1的警告:显然,img标签没有被解析.
但是,我不知道这个问题是如何与提出这个问题的理由相关的.我想你在noscript之外使用一个img元素,并使用数据:URL,所需的初始内容(作为后备,剩余脚本时的最终内容将保留).