Использовать события ссылки на jxbrowser
Я хочу отлавливать (потреблять (предотвращать перенаправление)) события ссылки на jxbrowser команды. Предположим, что содержание
<a href="testlink">link</a>
Когда пользователь щелкает ссылку, я хочу получить информацию о том, что пользователь щелкнул ссылку и получил URL-адрес, но я не разрешаю изменение страницы (ссылка должна использоваться).
Проблема в том, что ссылки в кавычках тега привязки не начинаются с какого-либо протокола (http:// или https:// и не заканчиваются никакими.html или т. Д.). Например, ссылка имеет вид:
<a href="foo">link<a>
и мы хотим, чтобы, когда пользователь нажимал на ссылку, мы получали информацию о том, что нажатой строкой является foo. Я знаю, что ссылки в этом теге являются недопустимыми и неправильно сформированными из-за стандартов, но их содержимое генерируется с использованием некоторых определенных бизнес-правил и затем устанавливается на JxBrowser. И мы не можем изменить способ создания ссылок.
В приведенном ниже примере мы получаем about: blank для URL, который не является необходимой информацией. Если мы изменим на
<a href="http://foo">link</a>
тогда он работает нормально, но мы не можем изменять ссылки (контент), как я уже упоминал ранее.
browser.addLoadListener(new LoadListener () {
public void onStartLoadingFrame(StartLoadingEvent arg0) {
System.out.println("link click occured " + arg0.getValidatedURL());
arg0.getBrowser().stop();
}
);
1 ответ
LoadHandler позволяет обрабатывать любые действия, связанные с загрузкой. Используя LoadHandler, вы можете определить тип загрузки и отменить любые события загрузки. Вот пример:
browser.setLoadHandler(new DefaultLoadHandler() {
@Override
public boolean onLoad(LoadParams params) {
if (params.getType() == LoadType.LinkClicked) {
System.out.println("Link clicked: " + params.getURL());
return true;
}
return false;
}
});