- From: fwsmail35 <fwsmail35@aol.com>
- Date: Thu, 10 May 2007 16:53:32 +0200
- To: www-amaya-dev@w3.org
- Message-ID: <464331EC.50603@aol.com>
Hello, Five years ago, some people wanted to integrate javascript in Amaya. Paul Cheyrou-lagreze proposed to use SpiderMonkey, the Mozilla's interpreter, but I guess nothing has been done until now. Here is the message he posted : http://lists.w3.org/Archives/Public/www-amaya-dev/2002Aug/0007.html I started a bit the work : you can now execute a script contained in an external file, or between <script type="text/javascript"></script>. For the moment, you can only manipulate objects/functions that do not require informations about the structure of the document (such as Math.abs) and also alert() and confirm() (implementation of prompt is not finished yet). Errors are reported in a dialog box, but this has to be improved. To integrate javascript in Amaya source code, follow these instructions : - compile Spidermonkey (download the source code at http://www.mozilla.org/js/spidermonkey/ ). Normally this is possible in Linux, Mac and Windows but I can only test with the first. On Linux, you have to go to the directory js/src/ and "make -f Makefile.ref". On Ubuntu, I got errors that I solved thanks to the following page : http://milindalakmal.wordpress.com/2007/02/21/compiling-spidermonkey/ . - put the javascript.c file in the Amaya/amaya/ directory - change the Makefile.in from Amaya/amaya/ to integrate new files : 1) in AMAYA_OBJ =, add the file javascript.o and libjs.so (the latter can be founded in SpiderMonkey compilation directory) 2) add informations to compile javascript.c. The two important things is to add the location of jsapi.h (I put it in /usr/local/include/spidermonkey) and the option -DXP_UNIX (other options must be added for windows or mac). Here is the lines I added : javascript.o : javascript.c $(CXX) $(CXXFLAGS) $(ALL_AMAYA_OPTIONS) $(INCLUDES) -I/usr/local/include/spidermonkey -DXP_UNIX -c @srcdir@/javascript.c -o $@ - In Amaya/amaya/init.c, in function AmayaClose, after the line "RemoveDocumentImages (0);", add "DestroyJavascript ();". This is to free the memory used by spidermonkey when closing Amaya. - Add a way to launch the interpreter. I chosed to use a shortcut. 1) In Amaya/amaya/EDITOR.a, add InitJavascript to the list of functions (for instance after ...CreateMSINH, CreateMTAN, CreateMTANH) 2) In Amaya/config/amaya.keyboard, add the shortcut to launched InitJavascript : "Ctrl <Key>j , Ctrl <Key>j: InitJavascript() " - You can now launch Amaya and test javascript : each time you make "Ctrl j j", the scripts contained in the current document (in formatted view) are executed. Some questions : Can somebody tell me which functions give the location of a document, and the line of an Element (for Error report). I would also like to know how to get the callback in javascript.c (for the function prompt). Fred
Attachments
- application/x-gzip attachment: javascript.c.tar.gz
Received on Thursday, 10 May 2007 14:53:51 UTC