|
|
Re: RAP SWT Browser widget LocationListener [message #1748633 is a reply to message #1748587] |
Fri, 25 November 2016 13:46 |
Tim Oswald Messages: 3 Registered: July 2009 |
Junior Member |
|
|
That's right, against the documentation in the source code, the event is not triggered by a hyperlink
But I found a working solution with JavaScript and callback function:
.....
Browser browser = new Browser(parent, SWT.NONE);
String s ="My name is " + translate2Script("Tim Oswald", "myfunction") + " and I say " + translate2Script("hello", "myfunction");
browser.setText(s);
new BrowserFunction(browser, "myfunction") { //$NON-NLS-1$
@Override
public Object function(Object[] arguments) {
System.out.println("Ret: " + Arrays.toString((Object[]) arguments[0]));
Object[] theArgs = (Object[]) arguments[0];
for(Object s : theArgs)
try {
System.out.println("Return value is:" + URLDecoder.decode(s.toString(), "UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
};
};
browser.pack();
......
private String translate2Script(String text, String functionName)
{
//<a href=\"#\" onclick=\"myfunction(['hello']);return false;\"><label style=\"cursor:pointer\">Hello</label></a>
StringBuffer sb = new StringBuffer();
sb.append("<a href=\"#\" onclick=" + functionName);
sb.append("([\"");
try {
sb.append(URLEncoder.encode(text, "UTF-8").replace( "+", "%20" ));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
sb.append("\"]);return false;\"><label style=\"cursor:pointer\">");
sb.append(text);
sb.append("</label></a>");
return sb.toString();
}
|
|
|
Powered by
FUDForum. Page generated in 0.02812 seconds