Solució problema Internet Explorer 7 i getAttribute setAttribute

Detallo aquí com solucionar un problema molt incòmode, que és la capacitat d’accedir a la propietat ACTION d’un formulari amb Internet Explorer 7, ja sigui mitjançant qualsevol d’aquests mètodes:

var s_adreca = document.formulari.getAttribute('action');
var form = document.getElementById('formulari');
document.getElemenyById('formulari').setAttribute('action') = 'http://www.codic.cat';
document.formulari.action = 'http://www.codic.cat';
document.forms[0].action='http://www.codic.cat';

Mentre que funciona amb qualsevol altre navegador: Chrome, Firefox, Opera o fins i tot internet explorer 8.

Encara que trobareu moltes webs que parlen d’un bug a Internet Explorer 7 no és ben bé així.

Segur que dins els vostre codi teniu una variable de tipus INPUT , probablement HIDDEN que duu el nom (name) d’ ACTION.

<form id="form" action="penca.php">
  <input name="action" type="submit" value="afegir" />
</form>

Aquesta és una paraula reservada que fa conflicte en el cas d’internet explorer 7, i la solució és tan simple com dir-li ACCIÓ o de qualsevol altra manera enlloc d’ACTION.

Enlloc de:

// Enlloc de:
<input type='hidden' name='action' value='afegir'>
// Emprar accio i no acció (millor sense accents per a evitar problemes UTF-8 i altres joc de caracters):
<input type="hidden" name="accio" value="afegir" />

Els apòstrofs dobles i tancar el tag simple amb / formen part de la especificació xhtml.

Aquí cobreixo alguns aspectes sobre xhtml que, si programes, necessites saber.

A la web WebDev he trobat un truc per recuperar el valor del form tot i aquesta desafortunada coincidència:

var form = document.getElementById('form');
var action = form.getAttributeNode('action').value;

Al fòrum de siteexperts.com hi ha diverses aproximacions:

<script type="text/javascript">

    alert(document.forms[0].action); // és un objecte

    alert(document.forms[0].action.value); // mostra "Hola", no l'action del formulari com "penca.php"

    alert(document.getElementsByTagName("FORM")[0].getAttribute("action")); // és l' INPUT, no el FORM 

</script>
Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Tags: , , ,

1.705 visualitzacions - versió en PDF

Comments are closed.