2010-03-03 2 views
6

Je voudrais effacer toute la section head une fois la page chargée ... en fait, mon objectif serait de supprimer tout le code JavaScript contenu dans la section head.modifier la section <head> avec javascript

Est-il possible de faire quelque chose comme ceci:

document.head.innerHTML = ""; 

Explication: J'utilise un script Python qui utilise Qt et webkit pour prendre des captures d'écran de websits.
Cela fonctionne sur la plupart des machines, mais il y en a une qui échoue. Ce site dispose d'un tas de code JavaScript qu'il exécute sur les délais d'attente. L'objet de page WebKit me permet d'exécuter du JavaScript sur la page. S'il y a un moyen de faire en sorte que le code JavaScript supprime tout le code de la section head, je voudrais pouvoir l'essayer à des fins de test pour voir s'il résout mon problème de script de capture d'écran.

+0

Avez-vous réellement essayé 'document.head.innerHTML =" ";'? Ce qui se produit? –

+0

un moyen de supprimer la tête en utilisant la méthode removeChild et l'ajouter à nouveau qui sera vide – Sarfraz

+1

document.head.innerHTML = ""; n'a rien fait quand je l'ai essayé. – benino

Répondre

3

Vous pouvez supprimer des éléments de la tête, mais cela n'a pas d'importance. Les scripts ont déjà été lancés et la suppression des éléments ne les déchargera plus.

+2

donc si une fonction javascript réside dans la section head et est supprimée puis rappelée par un timeout, elle fonctionnera toujours? – benino

0

Essayez d'utiliser:

document.getElementsByTagName('head').innerHTML = ""; 

pour dégager la tête. document.head n'existe pas, cela peut ne pas fonctionner.

Mais vous pouvez essayer de désactiver le JavaScript en utilisant JavaScript comme suggéré par noah.

Voir http://www.manticmoo.com/articles/jeff/programming/javascript/removing-javascript-with-javascript.php pour les directions. Cela semble fou, mais évidemment cela fonctionne.

+1

wow. intéressant. Je vais devoir voir si je peux utiliser ça! Merci. – benino

+0

À noter que document.head existe maintenant. – Halcyon991

0

Comme l'a dit noah, le simple fait de retirer le code de l'étiquette de tête n'aboutira à rien. Vous devez réellement annuler ce que fait le code. Par exemple, si vous utilisez setTimeout() pour configurer le code de délai d'attente dont vous vous plaignez, vous devez utiliser clearTimeout() pour le désactiver.

+2

Ou pirater 'setTimeout' avec' setTimeout = function() {}; ' –

2
document.getElementsByTagName("head")[0].innerHTML = ""; 

// IE 
var htmlEl = document.getElementsByTagName("html")[0]; 
htmlEl.removeChild(document.getElementsByTagName("head")[0]) 
var el = document.createElement("head"); 
htmlEl.appendChild(el); 

Pour arrêter les scripts JavaScript en cours d'exécution par setTimeout, vous devez utiliser clearTimeout, mais dans ce cas vous devriez avoir un gestionnaire ... Mais vous avez de la chance, si elles sont définies comme des variables globales.

0

$ ('# id'). Empty(); J'ai très bien travaillé.

Questions connexes