代码之家  ›  专栏  ›  技术社区  ›  Desolator

使用javascript添加vml元素(图像)

  •  3
  • Desolator  · 技术社区  · 16 年前

    嗨,我一直在尝试使用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 image元素时,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的元素。或者我能用什么来解决这个问题。

    谢谢

    2 回复  |  直到 15 年前
        1
  •  2
  •   James Westgate    15 年前

    我不断地挣扎着,最后我用填充物代替:

    <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。

        2
  •  0
  •   Desolator    16 年前

    休斯敦大学。像往常一样自己修好了…

    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函数时触发。 但我不想让那个警报箱工作。嗯,有点奇怪。我检查了内胆,我可以在那里看到。