je la méthode z.js
suivante pour appliquer des styles dynamiquement à l'élément DOM comme ceci:Comment appliquer dynamiquement des uri de données codées en base64?
z.Utils.applyStyle(element,'background-image:stamp.gif')
La fonction z.Utils.applyStyle
est ici:
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;
};
Que faire quand je veux utiliser la fonction ci-dessus pour appliquer des données uri comme image de fond? Quelque chose comme:
z.Utils.applyStyle(element,'background-image: url(data:image/gif;base64,[base64-code])');
Je l'ai fait avec une image 37K, mais il a échoué au travail.
Qu'est-ce que j'ai fait de mal?
Peut-être, que les uri de données ne sont pas disponibles sur les affectations dynamiques?
Peut-être grande 30k + taille base64 données est la faute?
La problématique peut être css trouve ici:
http://bookingshare.fw.hu/data_uri_long.css
Merci à tous pour votre aide à l'avance!
Je sais que IE8 a une limite de 32 Ko. Bien que la version 9 et plus n'ont pas cette restriction. Est-ce qu'une partie de l'image est visible ou pas?Je l'ai vu où seulement une partie de l'image montre si c'est trop grand. – sachleen
Non, il n'apparaît tout simplement pas .. Je pense qu'il y a quelque chose à propos de l'inclusion de saut de ligne. Il est arrivé qu'une horloge de données de 33 Ko ne puisse pas être incluse sans un saut de ligne forcé par un éditeur. Mais il n'apparaît dans aucun navigateur du tout! –