[IronPython] IronPython to JavaScript
Kristian Jaksch
kristian.jaksch at gmail.com
Tue Jan 13 09:59:48 CET 2009
Thanks for the reply!
No, I can't get it to work with Javascript either. I added the script
below to my page:
<script type="text/javascript">
function some_function(sender, args) {
value = args.val;
alert(value);
}
control = document.getElementById("sl2");
control.Content.event.Event = some_function; // THIS
LINE GIVES AN ERROR
</script>
I'm not sure about the exact translation of the error message (It's in
swedish) but it's something like:
"Error: Invalid pointer"
I guess it has something to do with the error I receive in my "app.py"
file as I described previously.
I made a minimal app.py file to test it again but I still receive the
same error. This file also test to get a string from Javascript to
Ironpython and that works just fine. Below is my complete file:
import clr, sys
clr.AddReferenceToFile("Scriptable.dll")
from System.Windows import Application
from System.Windows.Browser import *
from System.Windows.Controls import *
from System.Windows import Input
from Scriptable import *
class GetFromEditor(ScriptableForString):
def _method(self, string):
root.message.Text = string
#return new_string
GetFromEditor = GetFromEditor()
root = Application.Current.LoadRootVisual(UserControl(), "app.xaml")
HtmlPage.RegisterScriptableObject("GetFromEditor", GetFromEditor)
event = ScriptableEvent()
# This must also be registered
HtmlPage.RegisterScriptableObject("event", event)
args = ScriptableEventArgs()
args.val = 'some string'
event.OnEvent(args)
It must be something I'm missing but I just can't see what it could
be. Do you know of any good example were this approach is used?
Thanks again!
2009/1/12 Michael Foord <fuzzyman at voidspace.org.uk>:
> xkrja wrote:
>>
>> I'm trying to call javascript from IronPython (via Silverlight 2) but I
>> can'
>> get it to work properly. I looked at this example:
>>
>> http://www.voidspace.org.uk/ironpython/silverlight/scriptable.shtml#id10
>> http://www.voidspace.org.uk/ironpython/silverlight/scriptable.shtml#id10
>> It's explained very clearly but when I try to run my code I get a System
>> Error:
>>
>> SystemError: Object reference not set to an instance of an object.
>>
>> I just inserted the lines of code found on the example page in my
>> IronPyton
>> code:
>>
>> event = ScriptableEvent()
>>
>> # This must also be registered
>> HtmlPage.RegisterScriptableObject("event", event)
>>
>> args = ScriptableEventArgs()
>> args.val = 'some string'
>> event.OnEvent(args) #This gives me a System Error
>>
>> I create a C# .dll as explained in the example and add a reference to it.
>> The source is below:
>>
>> using System;
>> using System.Windows.Browser;
>>
>> namespace Scriptable
>> {
>>
>> [ScriptableTypeAttribute]
>> public class ScriptableForString
>> {
>> [ScriptableMemberAttribute]
>> public string method(string value)
>> { return this._method(value); }
>>
>> public virtual string _method(string value)
>> { return "override me"; }
>> }
>>
>> [ScriptableType]
>> public class ScriptableEvent
>> {
>> [ScriptableMember]
>> public event EventHandler Event;
>>
>> public virtual void OnEvent(ScriptableEventArgs e)
>> {
>> Event(this, e);
>> }
>> }
>>
>> [ScriptableTypeAttribute]
>> public class ScriptableEventArgs : EventArgs
>> {
>> private string _val;
>>
>> [ScriptableMemberAttribute]
>> public string val
>> {
>> get { return _val; }
>> set { _val = value; }
>> }
>> }
>> }
>>
>> Can anyone explain what I'm doing wrong?
>> Thanks for any help!
>>
>>
>
> Hmmm... do you have any Javascript hooking up to the event? If you don't,
> try hooking up to it and see if it makes any difference.
>
> The same code works for me. :-)
>
> Michael
>
> --
> http://www.ironpythoninaction.com/
> http://www.voidspace.org.uk/blog
>
>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
More information about the Ironpython-users
mailing list