2010-12-11 39 views
1

我正在使用Greasemonkey。如果xpathExpression不存在,則整個腳本將停止。exit document.evaluate

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

有沒有辦法阻止這種document.evaluate,繼續讓腳本運行?

錯誤:
「錯誤:表達式不是合法表達式。」

+0

我用卡薩布蘭卡的方法,它不是xpathexpression未定義或爲空。它只是xpath不存在。謝謝你們。 – guest 2010-12-12 01:37:58

+0

@客戶:如果卡薩布蘭卡的方法適用於您,請將其標記爲答案。 (單擊複選標記。) – 2010-12-13 03:13:57

+0

不是XPath問題,而是javascript代碼樣式(如:如何處理錯誤的參數值?) – 2010-12-13 18:35:26

回答

1

你可以把它包在try-catch塊:

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

try/catch應該被用來作爲最後的手段,當你無法預測可能會發生錯誤。

考慮這個:

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

實例變量xpathExpression,然後你可以使用:

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

不需要try/catch塊的

+0

這是本的答案。而且,從OP中,'xpathExpression'不是空的,它是一些無效的字符串/選擇器。 – 2010-12-12 22:45:15

+0

有一個無效的表達式,並使用try-catch塊停止它的意義是什麼?爲什麼不修改表達式? – w35l3y 2010-12-13 02:05:32

+0

我同意,但有時候人們會發現使用try-catch塊來測試表達式是無效的更容易。 – 2010-12-13 03:08:08