On 26 nov, 11:50, Blaine Monkey <blainem...@gmail.com> wrote:
> I've a Linux C++ application with mozilla browser embedded.
> The embedded browser shows the google page well.
> I made a simple page with some javascript code, to do a test. The page has a
> table with a text and the javascript changes the text with an image. If I
> open the page with firefox it shows fine, but the embedded browser only
> shows the text. Embedded browser supports javascript as firefox, in't it?
> What's the problem?
>
> Here is the source code:
>
> <html>
>  <head><title>TESTING</title>
>     <script src="buildTable.js" type="text/javascript"></script>
>  </head>
>     <body bgColor="yellow" onload="buildTable();">
>       <table id="myTable" border="2" width="400" height="400"><tr><td><span>
> TEXT </span></td</tr><table/>
>
>     </body>
> </html>
>
> // And this is the code of buildTable.js file:
> function buildTable(){
>  var build = '<tr><td><img src="food020.jpg" width="100"
> height="100"></img></td></tr>';
>     document.all.myTable.innerHTML=build;
>
> }
This is the application code:
#define XPCOM_GLUE 1
#include <stdlib.h>
#include <stdio.h>
#include <limits.h>
#include <gtk/gtk.h>
#include "xpcom-config.h"
#include "nsXPCOMGlue.h"
#include "nsDebug.h"
#include "nsCOMPtr.h"
#include "widget/nsIBaseWindow.h"
#include "nsILocalFile.h"
#include "nsIWebBrowser.h"
#include "nsIWebBrowserSetup.h"
#include "docshell/nsIWebNavigation.h"
#include "nsEmbedCID.h"
#include "nsEmbedString.h"
#include "xulapp/nsXULAppAPI.h"
#include "nsComponentManagerUtils.h"

#include "nsIPrefService.h"

XRE_InitEmbeddingType XRE_InitEmbedding;
XRE_TermEmbeddingType XRE_TermEmbedding;

static gboolean delete_event( GtkWidget *widget, GdkEvent *event,
gpointer data ) {
        gtk_main_quit();
        return FALSE;

}

int main(int argc, char** argv) {
        GtkWidget *window;
        nsCOMPtr<nsIBaseWindow> baseWindow;
        nsCOMPtr<nsIWebBrowser> webBrowser;
        nsCOMPtr<nsILocalFile> libxul;
        nsCOMPtr<nsIWebNavigation> webNavigation;
        nsCOMPtr<nsIWebBrowserSetup> browserSetup;
        nsDynamicFunctionLoad nsFuncs[] = {
                {"XRE_InitEmbedding", (NSFuncPtr*)&XRE_InitEmbedding},
                {"XRE_TermEmbedding", (NSFuncPtr*)&XRE_TermEmbedding},
                {0, 0}
        };

        nsresult rv;
        gtk_init (&argc, &argv);
        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_widget_show(window);

        rv = XPCOMGlueStartup("/usr/lib/xulrunner-1.9/libxpcom.so");

        if (NS_FAILED(rv)) {
                printf("XPCOMGlueStartup\n");
        }

        rv = XPCOMGlueLoadXULFunctions(nsFuncs);
        if (NS_FAILED(rv)) {
                printf("XPCOMGlueLoadXULFunctions\n");
        }

        rv = NS_NewNativeLocalFile(nsEmbedCString("/usr/lib/
xulrunner-1.9"), PR_FALSE, getter_AddRefs(libxul));
        if (NS_FAILED(rv)) {
                printf("NS_NewNativeLocalFile\n");
        }

        rv = XRE_InitEmbedding(libxul, 0, 0, 0, 0);

        if (NS_FAILED(rv)) {
                printf("Error XRE_InitEmbedding %d\n",rv);
                return -1;
        }

        webBrowser = do_CreateInstance(NS_WEBBROWSER_CONTRACTID, &rv);
        if (NS_FAILED(rv)) {
                printf("do_CreateInstance webBrowser\n");
        }

        browserSetup =  do_QueryInterface(webBrowser,&rv);
        if (NS_FAILED(rv)) {
          printf("do_QueryInterface browserSetup\n");
        }

        browserSetup->SetProperty
(nsIWebBrowserSetup::SETUP_ALLOW_PLUGINS,PR_TRUE);
        browserSetup->SetProperty
(nsIWebBrowserSetup::SETUP_ALLOW_JAVASCRIPT,PR_TRUE);
        browserSetup->SetProperty
(nsIWebBrowserSetup::SETUP_ALLOW_IMAGES,PR_TRUE);
        browserSetup->SetProperty
(nsIWebBrowserSetup::SETUP_ALLOW_META_REDIRECTS,PR_TRUE);
        browserSetup->SetProperty
(nsIWebBrowserSetup::SETUP_ALLOW_SUBFRAMES,PR_TRUE);

        baseWindow = do_QueryInterface(webBrowser);
        rv = baseWindow->InitWindow(window, 0, 0, 0, 1300, 700);
        if (NS_FAILED(rv)) {
                printf("InitWindow\n");
        }
        rv = baseWindow->Create();
        if (NS_FAILED(rv)) {
                printf("Create\n");
        }
        rv =baseWindow->SetVisibility(PR_TRUE);
        if (NS_FAILED(rv)) {
                printf("SetVisibility\n");
        }
        webNavigation = do_QueryInterface(webBrowser);
        //rv = webNavigation->LoadURI(NS_ConvertASCIItoUTF16("http://
www.google.com").get(),nsIWebNavigation::LOAD_FLAGS_MASK , 0, 0, 0);
        rv = webNavigation->LoadURI(NS_ConvertASCIItoUTF16(argv[1]).get
(),nsIWebNavigation::LOAD_FLAGS_NONE , 0, 0, 0);

        if (NS_FAILED(rv)) {
                printf("LoadURI\n");
        }
        g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK
(delete_event), 0);
        gtk_main();
        XRE_TermEmbedding();
        XPCOMGlueShutdown();
        exit(0);
}
_______________________________________________
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding

Reply via email to