The process works like this:

Using xmlHTTP, get the metadata (datasource URL and the target URL) << works
fine

Using xmlHTTP, "GET" data from the datasource URL << works fine, too

document.location = target URL << works fine

The next step would be to wait until the new location is done loading, then
use the data to fill in the form at the target URL. However, the script dies
at the point just after the document location is set to the target form. The
code of the script is below:

// ==UserScript==
// @name        Test 1
// @namespace   dt1
// @description Fill out client forms
// @include     https://initiating_page.com
// @include             https://domain_4_the_client_forms/*
// @version     1
// ==/UserScript==

function mainContent(){

        var vURL = "http://metadata_URL";;
        var myCtl = document.getElementById("divDebug");
        var fieldCounter = 0;
        
        myCtl.innerHTML = '<style type="text/css">* {font-family: sans-serif;
font-size: 12px;}</style>';
        myCtl.innerHTML += '<div id="divDebug"></div>';
        myCtl.innerHTML += '<p>version: 1.0</p>';
        myCtl.innerHTML += '<p>Checking datasource: ' + vURL + '</p>';
        
        GM_xmlhttpRequest({
                method: "GET",
                url: "http://datasource_url";,
                onload: function(response) {
                        parms = response.responseText.split('~~~');
                        datasource = parms[0];
                        target = parms[1];
                        success = parms[2];
                        failure = parms[3];
                        GM_xmlhttpRequest({
                                method: "GET",
                                url: datasource,
                                onload: function(response) {
                                        document.location = target;
                                        // << HERE IS WHERE WE BREAK DOWN >>
                                        window.load = function(){
                                                parms = 
response.responseText.split('~~~');
                                                returnedData = parms[1];
                                                var parser = new DOMParser();
                                                var dom = 
parser.parseFromString(returnedData, "application/xml");
                                                var fields = 
dom.getElementsByTagName('field');
                                                var fieldname;
                                                var data;
                                                var datatype;
                                                var formFieldId;
                                                for (var i = 0; i < 
fields.length; i++) {
                                                    fieldname =
fields[i].getElementsByTagName('fieldname')[0].textContent;
                                                    data = 
fields[i].getElementsByTagName('data')[0].textContent;
                                                    formFieldId =
fields[i].getElementsByTagName('formfieldid')[0].textContent;
                                                    datatype =
fields[i].getElementsByTagName('datatype')[0].textContent;
                                                    alert([fieldname, data, 
formFieldId].join('\n'));
                                                    fieldCounter++;
                                                    if(fieldCounter == 1) 
return // just do the first one as a test
                                            }
                                      }
                                }
                        });
                }
        });
}

mainContent();

// --- end

I need the script to wait until the target location is loaded, then continue
and fill out fields in the form. What am I missing?

Thanks!

-- 
View this message in context: 
http://old.nabble.com/Complex-data-entry-in-a-multi-page-web-form-tp33789823p33789823.html
Sent from the GreaseMonkey List mailing list archive at Nabble.com.

-- 
You received this message because you are subscribed to the Google Groups 
"greasemonkey-users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/greasemonkey-users?hl=en.

Reply via email to