如何动态应用 base64 编码的数据 uri
How to apply base64 encoded data uri's dynamically?
我有以下z.js
方法可以将样式动态应用于DOM元素,如下所示:
z.Utils.applyStyle(element,'background-image:stamp.gif')
z.Utils.applyStyle
函数在这里:
z.Utils.applyStyle = function(elRef,style)
{
if(typeof(elRef) == 'string')
{
elRef = document.getElementById(elRef);
}
if(elRef == null || style == null || elRef.style == null)
{
return null;
}
style=style.replace(/'_/g,'-').toLowerCase();
var pairs = style.split(";");
for(var ii =0; ii < pairs.length; ii++)
{
var kv = pairs[ii].split(":");
// trim value
if(!kv[1])
{
continue;
}
var value = kv[1].replace(/^'s*/,'').replace(/'s*$/,'');
var key = "";
for(var jj = 0; jj < kv[0].length; jj++){
if(kv[0].charAt(jj) == "-")
{
jj++;
if(jj < kv[0].length)
{
key += kv[0].charAt(jj).toUpperCase();
}
continue;
}
key += kv[0].charAt(jj);
}
switch(key)
{
case "float":
key = "cssFloat";
break;
case "right":
key="left";
value=value-z.Utils.getElementOffset(elRef).width;
break;
case "bottom":
key="top";
value=value-z.Utils.getElementOffset(elRef).height;
break;
}
try
{
elRef.style[key] = value;
}
catch(e)
{
//some error thrown;
}
}
return true;
};
当我想使用上面的函数将数据 uri 应用为背景图像时该怎么办?像这样:
z.Utils.applyStyle(element,'background-image: url(data:image/gif;base64,[base64-code])');
我用 37K 图像做到了,但它不起作用。
我做错了什么?
可能是,数据 uri 在动态分配中不可用?
可能是 30k+ 大小的 base64 数据是故障?
有问题的 css 可以在这里查看:
http://bookingshare.fw.hu/data_uri_long.css
提前感谢大家的帮助!
我认为问题出在以下行上:
style=style.replace(/'_/g,'-').toLowerCase();
Base64 区分大小写。此行将使整个样式小写。大写的 URL 也不起作用。
你为什么要用这个z.js
?您可以简单地使用 JS 设置样式。
element.style.backgroundImage="url('image.png')";
@Sachleen你是对的。有点。 style.replace(/'_/g,'-').toLowerCase()
混淆了base64解码。但是之后代码就不能很好地工作了,因为var pairs = style.split(";");
当我尝试将一堆样式应用于元素时,还混淆了 applyStyle 方法的第 12 行之后的 base64 解码,例如
z.Utils.applyStyle(elem,'width:10px;'+
background:transparent url(data:image/gif;base64,stg...) no-repeat;')
由于背景样式声明"url(data:image/gif;base64,"
中存在";"
字符串,"url(data:image/gif"
中会有一个额外的数组项,它本身肯定是无用的,因为它是背景声明的标头,所以样式声明被不必要地拆分并完全删除;
z.js 完全由我开发,用于教育目的,以抽象出使用 DOM 的 JavaScript 初学者区分大小写的困惑。 z.Utils.applyStyle(elem,'Background-Image:url(stamp.gif)')
等效于 z.Utils.applyStyle(elem,'background-Image:url(stamp.gif)')
以及 z.Utils.applyStyle(elem,'background-image:url(stamp.gif)')
.由于 css 错误不存在运行时,我发现在与学生协作时很有用。
无论如何,谢谢,让我专注于更改样式运行时与 base64 编码图像的限制,这会导致更好的网络性能。
- base64编码的图像比intranet中的常规图像好吗
- 如何在做PHP时在base64中动态编码;preg_ replace”;
- JavaScript代码,用于在浏览器中显示字节数组中的PDF文件(非base64编码)
- 从Base64 Ionic编码和解码图像
- 如何在JavaScript/Node中计算SHA256哈希和Base64字符串编码
- 一个javascript实现base64图像编码并将结果写入文本文件
- php中javascript解码中的base64编码
- 从PhoneGap FileEntry中提取base64编码的数据
- 我用base64对图像进行了正确编码吗
- 如何使用Java解码由window.btoa编码的base64图像
- 在应用程序脚本中将 base64 编码的图像与 HtmlService 一起使用
- 通过窗体传递base64编码的图像
- 读取一个本地文件,编码为base64,我想给用户一个将结果保存到文件的选项
- 如何在javascript变量中从url中获取base64编码值
- 如何在internet explorer中从剪贴板中获取base64编码的图像
- 将图像编码为base64并上传到Phonegap中的web服务
- AngularJS:ng类,用于动态base64编码图像作为背景图像
- 在原生PDF查看器中打开Base64编码的PDF
- 对Buffer如何在node.js中编码base64感到困惑
- 如何在Sencha Touch 2中定义一个编码base64图像作为背景