As a developer entering the Netscape enviroment, I have noticed that there are several types of documents through out the mozilla web site that are outdated, wrong, or incomplete. This has hampered our development efforts to say the least. But I like the concept of the cross platform development (XPCOM) environment. If only I could pick up a document and know that it is correct. I have questions on almost every newsgroup that nobody seems to be able to answer.
One of the biggest problems that we have is the DOM, as it applys to XPCOM or even Javascript. For example I have done a simple XUL toolbar that interfaces with java script functionality which will call an XPCOM C++ interface to process most of the toolbar information. The same code base is used with IE and works fine with an IE toolbar. I must state that we fully expect to write code that can only be utilized with Netscape. Enough with the background and on to the problems! 1. DOM Hierarchy Documentation! I am very familar with the DOM in the Microsoft Environment. I fully understand the relationships and what intefaces to use during development. I cannot say that for mozilla environment. For example I know how to get the IHTMLDocument2 interface from the browser interface. I know all about the browser events and how I can gain access to other intefaces at opportune times. One item that I am personally troubled by is the ability to get the javascript functionality from the DOM. With the IE DOM it is pretty simple to gain access to the JavaScript functionality. I have not found this very easy with Netscape - infact I do not think it is possible. I do not see the "GetScripts" (Scripts) call from the nsIDOMHTMLDocument, as I do with the MS documentation with IHTMLDocument2. I think I am just spoiled with IE DOM functionality. 2. JavaScript/C++ XPCOM interfaces available from Browser. I could not think of a good way to start this off, but my problem is, basically, for example, how do I determine what interfaces are available from "window.content.document" when I pass this to my C++ XPCOM object? There is not any documentation that properly shows the interaction between the browser and a toolbar / browser helper object (BHO). How do I get the web browser interface from XUL/javascript toolbar, and what interfaces can I query? 3. XPCOM documentation. I understand the concepts and have even had a helping hand from Netscapes own Doug Turner. But the documentation is simply not up to par. I wish I had a coin for everytime that I have read a documented example and found out the interface is no longer availabe with the current release. Then I ask the question how do I do it now? Or where do I go from here? ....since that interface is no longer available or obsolete. I am hoping someone may shed some light and point me to the golden documentation - but I doubt this is going to happen. I thing the XPCOM environment truly has possibilities - but I can only imagine how many developers give up after reading some of the documentation and trying to apply it. I know I have almost given up many times! Far too many of my customers do not want to provide a Netscape solution simply because it is too hard to support on-going development.Or the big reason - market share! A solution is to provide good documentation for developers.
