Javascript 退出文档。评估
我用的是Greasemonkey。如果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
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块更容易测试表达式是否无效。