Je suis sur le point d'écrire une extension pour Google Chrome Browser. C'est un script de contenu qui change la largeur d'une table. Ceci est le XPath pour la table mentionnée:Une manière intelligente d'accéder à des nœuds DOM profondément imbriqués
/html/body/table/tbody/tr/td/table[2]/tbody/tr/td[3]
/html/body/table/tbody/tr/td/table[2]/tbody/tr/td[3]/fieldset/div[1]/div[2]
/html/body/table/tbody/tr/td/table[2]/tbody/tr/td[3]/fieldset/div[2]/div[2]
/html/body/table/tbody/tr/td/table[2]/tbody/tr/td[3]/fieldset/div[3]/div[2]
Malheureusement, il est impossible d'accéder à la table avec getElementById, getElementsByName ou similaire. J'ai trouvé la solution suivante:
document.getElement("body").childNodes[7].childNodes[1].childNodes[0].childNodes[3].childNodes[9].childNodes[1].childNodes[0].childNodes[5].width=500
document.getElement("body").childNodes[7].childNodes[1].childNodes[0].childNodes[3].childNodes[9].childNodes[1].childNodes[0].childNodes[5].childNodes[3].childNodes[3].childNodes[3].style.width="300px"
document.getElement("body").childNodes[7].childNodes[1].childNodes[0].childNodes[3].childNodes[9].childNodes[1].childNodes[0].childNodes[5].childNodes[3].childNodes[7].childNodes[3].style.width="300px"
document.getElement("body").childNodes[7].childNodes[1].childNodes[0].childNodes[3].childNodes[9].childNodes[1].childNodes[0].childNodes[5].childNodes[3].childNodes[5].childNodes[3].style.width="350px"
Bien que cette solution fonctionne, je ne suis pas satisfait. Y a-t-il une façon plus intelligente de faire cela?
Je pense que cela peut être fait avec un [: nth-child] (https: // développeur/.mozilla.org/en-US/docs/Web/CSS /: nième-enfant) /: requête de type nth-of-type et un moteur de sélection CSS moderne (tel que Sizzle trouvé dans jQuery ou [document.querySelector] (https: //developer.mozilla.org/en-US/docs/Web/API/document.querySelector)). – user2864740