Javascript 退出文档。评估

Javascript 退出文档。评估,javascript,xpath,greasemonkey,document.evaluate,Javascript,Xpath,Greasemonkey,Document.evaluate,我用的是Greasemonkey。如果xpathExpression不存在,整个脚本将停止 document.evaluate( xpathExpression, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); 是否有方法停止该文档。评估并继续让脚本运行 错误: “错误:表达式不是合法表达式。”您可以将其包装在try catch块中: try { document.ev

我用的是Greasemonkey。如果
xpathExpression
不存在,整个脚本将停止

document.evaluate(
    xpathExpression,
    document,
    null,
    XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
    null);
是否有方法停止该
文档。评估
并继续让脚本运行

错误:

“错误:表达式不是合法表达式。”

您可以将其包装在
try catch
块中:

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

try/catch
在您无法预测错误的发生方式时,应该作为最后手段

请考虑以下情况:

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

实例化变量xpathExpression,然后可以使用:

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

不需要try/catch块

我使用了卡萨布兰卡的方法,这并不是说xpathexpression未定义或为空。它只是xpath不存在。谢谢你们两位。@guest:如果卡萨布兰卡的方法对你们有效,就把它作为答案。(点击复选标记)不是XPath问题,而是javascript代码风格(如:如何处理错误的参数值?)@Alejandro:这是一个XPath问题。真正的问题是如何避免无效的搜索/选择器——这需要了解XPath语法和工具。@Brock Adams:我不同意。要更正的XPath表达式在哪里?这就像调用任何可能引发异常的函数一样。请把你的版本倒回去。这是本的答案。并且,从OP中,
xpathExpression
不是空的,它是一些无效的字符串/选择器。使用try-catch块停止一个无效的表达式有什么意义?为什么不修复表达式呢?我同意,但有时人们会发现使用try-catch块更容易测试表达式是否无效。