Возможно, да, но я не знаю, рекомендуется ли это. В любом случае вы можете обработать исключения, выданные во время выполнения KieBase
, зарегистрировав ConsequenceExceptionHandler
для него.
Этот ответ объясняет упомянутый подход.
Надеюсь, это поможет,
Для XPath попробуйте:
//input[@type="hidden" and @name="val" and position() = 1]/@value
Для использования в сценарии GreaseMonkey сделайте что-то вроде этого:
var result = document.evaluate(
"//input[@type='hidden' and @name='var' and position()=1]/@value",
document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null
);
var hiddenval = result.snapshotItem(0);
if (hiddenval)
alert("Found: " + hiddenval.nodeValue);
else
alert("Not found.");
Строго говоря: Используя "position()=1"
в XPath фильтр не абсолютно необходим, потому что только первый возвращенный результат будет используемым так или иначе (через snapshotItem(0)
). Но почему сборке больший набор результатов, чем Вы действительно нужно.
Править: Используя результат XPath ORDERED_NODE_SNAPSHOT_TYPE
тип удостоверяется, что Вы получаете узлы в порядке документа. Это означает, что первый узел результата также будет первым узлом в документе.
Tomalak имеет верное представление, но я сделал бы это немного по-другому.
var result = document.evaluate(
"//input[@type='hidden' and @name='var']",
document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
var input = result.iterateNext();
if (input)
alert("Found: " + input.value);
else
alert("Not found.");
Таким образом, Вы указываете как часть набора результатов, что Вы хотите только один возвращенный объект (первый в документе, в этом случае). Кроме того, здесь Вы выбираете узел DOM и затем читаете value
свойство для получения значения. Я нашел, что это более надежно, чем выборка строкового значения через XPath (хотя Ваш пробег может варьироваться).
Одна возможность состоит в том, чтобы включать jQuery в Ваши сценарии. Это обеспечит более простой синтаксис для доступа к элементам.
// ==UserScript==
// @name MyScript
// @namespace http://example.com
// @description Example
// @include *
//
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js
// ==/UserScript==
var input = $("input[type='hidden'][name='var']");
if (input) {
alert("Found: " + input.val());
} else {
alert("Not found.");
}