Autor Zpráva
1Pupik1989
Profil
Zdravím.

Lze nějak pomocí HTML komponentů nastavit defaultní hodnotu pro element?
Snažím se tagu "canvas" nastavit deafaultní atributy "width" a "height", nicméně se mi to nedaří. Po načtení stránky to funguje, nicméně já bych chtěl ještě před dokončením načítání.

Základní html
<html>

  <head>
    <script type="text/javascript" src='ie_render.js'></script>  
  </head>
  
  <body>
    <canvas id="can"></canvas>
    <script type="text/javascript">
      alert(document.getElementById('can').width); //undefined bohužel     
    </script>   
  </body>
  
</html>

ie_render.js
if(!document.createElement('canvas').getContext){
  document.namespaces.add('v', 'urn:schemas-microsoft-com:vml');
  document.namespaces.add('o', 'urn:schemas-microsoft-com:office:office');
  document.createStyleSheet().cssText = 'canvas{display:block;width:300px;height:150px;behavior: url(canvas.htc);}'+
    'v\\:*{ behavior:url(#default#VML); position:absolute; display: inline-block; }' + 
    'o\\:*{ behavior:url(#default#VML); }';
}

canvas.htc
<component>
  <property NAME="width" GET="getWidth" PUT="setWidth" VALUE="300">
  <property NAME="height" GET="getHeight" PUT="setHeight" VALUE="150"> 
  
  <script language="JScript">
    function getWidth(){
      return 'šířka'; 
    };
    function setWidth(value){
      this.style.width=value+'px';
    };
    
    function getHeight(){
      return 'výška';
    };
    function setHeight(value){
      this.style.height=value+'px';
    };
  </script>
</component>

Jde mi spíše o to, jak při zjištění třeba "width" elementu zavolat funkci "getWidth".

Neví někdo? Nebo nejde to i jinak?
_es
Profil
1Pupik1989:
//undefined bohužel
V akom prehliadači? IE8 canvas nepodporuje.
1Pupik1989
Profil
Je to ie8. Vím že ho nepodporuje. Tímto kódem se vlastně canvas chová jako blokový element. Proto se snažím udělat getter a defaultní hodnoty pro width a height.

Pokud zapíšu:
document.getElementById('can').width = 500;

Tak se vše provede v pořádku a canvas má šířku 500px.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0