3

您好我一直在尝试使用 javascript 添加 VML 图像元素。现在这是我用来生成这些图像的内容:

function add_tools()
{       
var elemm = document.createElement('rvml:image'); 
elemm.setAttribute('src', 'pic.png');
elemm.setAttribute('id', 'gogo');
elemm.setAttribute('class', 'rvml');
document.body.appendChild(elemm);   

document.getElementById('gogo').style.position='absolute';
document.getElementById('gogo').style.width=55;
document.getElementById('gogo').style.height=55;
document.getElementById('gogo').style.top=200;
document.getElementById('gogo').style.left=300;
document.getElementById('gogo').style.rotation=200;
document.getElementById('gogo').style.display = "block"; 
}

通常当我生成 vml 图像元素时,HTML 代码应该类似于:

<rvml:image style="POSITION:absolute; WIDTH:55px; HEIGHT:55px; TOP:0px; LEFT:0px; rotation:0;" src="pic.png" id=gogo class=rvml>

现在上面的 javascript 函数适用于 HTML 元素。但是当我用它来生成 VML 元素时。生成的元素不会显示在浏览器中。但是当我检查 document.body.innerHTML 时。我可以看到该元素已实际创建。但它没有显示..

有任何想法吗?有什么方法可以用来用javascript刷新或重绘元素。或者我可以用来解决这个问题的任何东西。

谢谢

4

2 回答 2

2

我为此苦苦挣扎,最后我使用了填充:

<div style="position:relative">
  <vml:rect stroked="f" style="position:absolute"> 
    <vml:fill type="tile" aspect="ignore" src="pathto.png" style="position:absolute">  
    </vml:fill>
  <vml:rect> 
</div>

似乎需要绝对位置,因此需要包含 div 的相对位置。

有关更多信息,请查看用于 jQuery 的 superpng 插件,它使用此技术进行 png alpha 替换。

于 2011-05-27T10:40:42.283 回答
0

呃。像往常一样自己修...

function add_tools()
{   
var elemm = document.createElement('rvml:image'); 
elemm.src = 'pic.png';
elemm.className = 'rvml';
document.body.appendChild(elemm);
elemm.id = "gogo";
elemm.style.position='absolute';
elemm.style.width=55;
elemm.style.height=55;
elemm.style.top=200;
elemm.style.left=300;
elemm.style.rotation=200; 
}

似乎 setAttribute 函数没有改变元素的状态。但我仍然遇到事件问题。现在如果我想使用:

elemm.onload = "alert('coco')";

这应该在我运行将绘制元素的 javascript 函数时触发。但我没有让那个警报框工作。嗯,有点奇怪。我检查了innerHTML,我可以在那里看到它。

于 2010-07-21T08:40:31.243 回答