Question: can I call JS functions from Opal?
Answer: totally!
Opal standard lib (stdlib) includes a native
module, let’s see how it works and wrap window
:
require 'native'
window = Native(`window`) # equivalent to Native::Object.new(`window`)
Now what if we want to access one of its properties?
window[:location][:href] # => "http://dev.mikamai.com/"
window[:location][:href] = "http://mikamai.com/" # will bring you to mikamai.com
And what about methods?
window.alert('hey there!')
So let’s do something more interesting:
class << window
# A cross-browser window close method (works in IE!)
def close!
%x{
return (#@native.open('', '_self', '') && #@native.close()) ||
(#@native.opener = null && #@native.close()) ||
(#@native.opener = '' && #@native.close());
}
end
# let's assign href directly
def href= url
self[:location][:href] = url
end
end
That’s all for now, bye!
window.close!
Leave a Reply