Hi Eloy,

it is not related to hotcocoa since my original application is not using it - this example was taken because
it was that simple that it fitted in some lines of code.

The question is rather, if I should attach a stripped down version of my app for better testing purposes.

Thanks,
Michael

Am 02.02.2010 um 22:22 schrieb Eloy Duran:

Hi Michael,

Could you try if the webview/js bridge part of the code works, or doesn't, in a normal MacRuby application? If it doesn't work, please file a ticket on https://www.macruby.org/trac/newticket. If it does, then it might be a HotCocoa problem, in which case please file a ticket here: http://github.com/richkilmer/hotcocoa/issues

Thanks,
Eloy

On 1 feb 2010, at 15:51, Michael Pitra wrote:


I'm trying to do something similar to this example:

http://code.reflectivepixel.com/post/103638573/require-hotcocoa-framework-webkit-class

Code excerpt:

require 'hotcocoa'
framework 'webkit'
class Application
include HotCocoa
FULL={:expand => [:width,:height]}
BASE=<<-END
  <html><head><style type="text/css">
  * { font-family: Monaco; }
  </style><script type="text/javascript">
  function say(arg) { window.TheBridge.click(arg);}
  </script>
  </head><body><h3>Ruby JavaScript Bridge</h3>
  <a href="#" onclick="say('hi')">tell</a></body></html>
END
def click(arg) #called from javascript
  root = document.createElement("div");
  root.innerHTML="javascript tells ruby: #{arg}"
  document.body.appendChild(root)
end
def document
  @web_view.mainFrame.DOMDocument
end
def self.webScriptNameForSelector(sel) #hide : in name
  sel.to_s.sub(/:$/,'') if is_available_selector?(sel)
end
def self.isSelectorExcludedFromWebScript(sel)
  ! is_available_selector?(sel)
end
def self.isKeyExcludedFromWebScript(key)
  true
end
def self.is_available_selector?(sel)
  ['click:'].include?(sel.to_s)
end
def start
  application :name => "MyBridge" do |app|
    app.delegate = self
    window :title => "MyBridge",
      :frame => [10, 620, 330, 230] do |win|
      win << @web_view=web_view(:layout => FULL) do |wv|
        wv.mainFrame.loadHTMLString BASE, baseURL: nil
        wv.frameLoadDelegate=self
        wso=wv.windowScriptObject #make visible to JS
        wso.setValue(self, forKey:"TheBridge")
      end
      win.will_close { exit }
    end
  end
end
end
Application.new.start

Clicking on "tell" does not work. It seems, that the selector for "click:" is not found. When logging the selector values in self.isSelectorExcludedFromWebScript(sel), the "click:" selector is not amongst the results.

What am I missing here?

Regards,
Michael

_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel