Yes.
In the UI::HtmlDialog
class, the add_action_callback()
instance method will convert between Js and Ruby types automatically.
In the old UI::WebDialog
class, your webpages could only send String data via a protocol handler.
The UI::HtmlDialog
class does not use the protocol handler to send data to Ruby.
That said, you could still likely do it, thus defining a singleton method upon your HtmlDialog instance:
EDIT: Proven not to work! The UI::HtmlDialog
class’ execute_script()
method returns nil
.
Non-working attempt ...
@dlg.define_singleton_method(:get_element_value) {|id|
self.execute_script("document.getElementById('#{id}').value")
}
Or, you can create your own subclass of UI::HtmlDialog
, thus:
module Archetris
class NiftyDialog < UI::HtmlDialog
def get_element_value( id )
self.execute_script(
"document.getElementById('#{id}').value"
)
end
end
end
EDIT: For a working example see …