2010-12-11 30 views
1

J'utilise Greasemonkey. Si le xpathExpression n'existe pas, tout le script va s'arrêter.exit document.evaluate

document.evaluate(
    xpathExpression, 
    document, 
    null, 
    XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, 
    null); 

est-il un moyen d'arrêter que document.evaluate et continuer à laisser exécuter le script? L'erreur:
"Erreur: L'expression n'est pas une expression légale."

+0

i utilisé la méthode de casablanca, il pas xpathexpression est indéfini ou vide. C'est juste que le xpath n'existe pas. Merci à vous deux. – guest

+0

@guest: Si la méthode de Casablanca fonctionne pour vous, marquez-la comme réponse. (Cliquez sur la coche.) –

+0

Pas de question XPath, mais le style de code javascript (comme dans: Comment gérer la valeur du mauvais paramètre?) –

Répondre

1

Vous pouvez envelopper dans un bloc try-catch:

try { 
    document.evaluate(...); 
} catch (ex) { 
    // something went wrong 
} 
2

try/catch devrait vraiment être utilisé en dernier recours quand vous ne pouvez pas prédire comment une erreur peut se produire.

considèrent ceci:

if (typeof xpathExpression !== "undefined" && xpathExpression !== "") { 
    document.evaluate(
     xpathExpression, 
     document, 
     null, 
     XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, 
     null); 
} 
0

instancier la XPathExpression variable et, vous pouvez utiliser:

if (xpathExpression) 
document.evaluate(...); 

pas besoin de bloc try/catch

+0

C'est la réponse de Ben. Et, à partir de l'OP, 'xpathExpression' n'est pas vide, c'est une chaîne/sélecteur invalide. –

+0

quel est le point d'avoir une expression invalide et l'arrêter en utilisant le bloc try-catch? pourquoi ne pas simplement corriger l'expression? – w35l3y

+0

Je suis d'accord, mais parfois les gens trouvent plus facile de tester que l'expression n'est pas valide en utilisant un bloc try-catch. –