diff -r 2fa85847ccf7 -r 859804c78010 javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/Element.java --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/Element.java Tue Mar 05 19:00:36 2013 +0100 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/Element.java Thu Mar 14 09:22:28 2013 +0100 @@ -17,6 +17,8 @@ */ package org.apidesign.bck2brwsr.htmlpage.api; +import javafx.scene.web.WebEngine; +import netscape.javascript.JSObject; import org.apidesign.bck2brwsr.core.JavaScriptBody; /** Represents a generic HTML element. @@ -73,13 +75,26 @@ + "};\n" ) final void on(OnEvent ev, OnHandler r) { + WebEngine e = web(); + JSObject add = (JSObject)e.executeScript( + "var x = {}; x.add = new Function('e','attr','r', " + + " 'window.document.getElementById(e)[attr] = function(ev) { var d = ev ? ev : null; try { r.onEvent(d); } catch (x) { alert(\"OK\" + r[\"onEvent\"] + \"e\" + d + x); } };'" + + "); x;"); + add.call("add", id, ev.id, r); + } + + private static WebEngine web() { + return (WebEngine) System.getProperties().get("webEngine"); } /** Shows alert message dialog in a browser. * @param msg the message to show */ @JavaScriptBody(args = "msg", body = "alert(msg);") - public static native void alert(String msg); + public static void alert(String msg) { + JSObject obj = (JSObject) web().executeScript("window"); + obj.call("alert", msg); + } /** Generic way to query any attribute of this element. * @param property name of the attribute