[Project_owners] evaluate html document by XMLHttpRequest

Foreningen Selvet - Jesper Staun Hansen jesper at selvet.dk
Fri Aug 10 10:56:28 PDT 2007


Discard from this question.
I found the solution! Yay!

Foreningen Selvet - Jesper Staun Hansen wrote:
> I am getting really impatient about this problem as I cant seem to solve 
> it :O!
> Does anyone have a complete script I can look at using Greasymonkeys 
> version of the XMLHttpRequest downloader "and put it in a iframe and 
> evaluate it" script.
>
> I'm running out of ideas here.
>
>
> Greets.
>
> Tommi Rautava wrote:
>   
>> The DOMContentLoaded event is sent after close(), so it should be
>> enough if the listener is added just before
>> iframe.contentDocument.close().
>>
>> 2007/8/8, eric.jung at yahoo.com <eric.jung at yahoo.com>:
>>   
>>     
>>> Interesting. The only comment I'll make is you should add
>>> iframe.contentDocument.addEventListener() *before* writing
>>> the responseText into the IFRAME otherwise, under race conditions, I could
>>> see you missing the DOMContentLoaded event.
>>>
>>>
>>>
>>> ----- Original Message ----
>>> From: Foreningen Selvet - Jesper Staun Hansen <jesper at selvet.dk>
>>> To: Mozdev Project Owners List <project_owners at mozdev.org>
>>> Sent: Wednesday, August 8, 2007 7:21:47 AM
>>> Subject: Re: [Project_owners] evaluate html document by XMLHttpRequest
>>>
>>> So, the trick here would be to throw all of the code into iframe and
>>> define it as text/html and then parse it?
>>> Guess I think I got it right.
>>>
>>>
>>> Tommi Rautava wrote:
>>>     
>>>       
>>>> The problem is that you cannot parse HTML with XML parser. I struggled
>>>> with the same problem some time ago and the best solution I have found
>>>> so far is the HTML parser example made by Aaron Boodman (the original
>>>> author of Greasemonkey):
>>>> http://youngpup.net/userscripts/htmlparserexample.user.js
>>>>
>>>> br, Tom
>>>>
>>>> 2007/8/7, Foreningen Selvet - Jesper Staun Hansen <jesper at selvet.dk>:
>>>>
>>>>       
>>>>         
>>>>> Hello.
>>>>>
>>>>>
>>>>> I am having some trouble using element.evaluate(properties) with
>>>>> documents fetched with XMLHttpRequest, so I am looking for a method to
>>>>> do the same as this:
>>>>>
>>>>> //*****
>>>>> var roundinfo = {
>>>>>     runde : "56",
>>>>>     heroesid : null,
>>>>>     heroesnick : null
>>>>> }
>>>>>
>>>>>         var path = '//table/tbody/tr/td';
>>>>>         var obj = document.evaluate(path,document,null,
>>>>>             XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
>>>>>         
>>>>>           
>>> null);
>>>     
>>>       
>>>>>         for (var k = 0; k < obj.snapshotLength; k++) {
>>>>>             obj2 = obj.snapshotItem(k).parentNode;
>>>>>             var nodes = obj2.childNodes;
>>>>>
>>>>>             dump("Found keys: "+nodes.length+"\n");
>>>>>             var menu =
>>>>>         
>>>>>           
>>> nodes[0].textContent.trim().split("#");
>>>     
>>>       
>>>>>             roundinfo.heroesnick = menu[0].trim();
>>>>>             roundinfo.heroesid = menu[1].trim();
>>>>>             dump("Nick is: "+roundinfo.heroesnick+"\n");
>>>>>             dump("ID is: "+roundinfo.heroesid+"\n\n");
>>>>>         }
>>>>> //*****
>>>>>
>>>>> And the document contains this:
>>>>>
>>>>> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
>>>>> <html>
>>>>> <head>
>>>>> <title></title>
>>>>> </head>
>>>>> <body>
>>>>> <table>
>>>>>         <tr>
>>>>>                 <td colspan="3"><font face="arial" size="1"
>>>>>         
>>>>>           
>>> color="DarkTurquoise">Axe Decapitators       #130303</font></td>
>>>     
>>>       
>>>>>         </tr>
>>>>>
>>>>>
>>>>> </table>
>>>>> </body>
>>>>> </html>
>>>>>
>>>>> And the dump would be
>>>>>
>>>>> Nick is: Axe Decapitators
>>>>> ID is: 130303
>>>>>
>>>>> And I tried some things to make it with XMLHttpRequest:
>>>>> //******* Attemp:
>>>>>             var req = new XMLHttpRequest();
>>>>>             req.overrideMimeType('text/html');
>>>>>             req.open('GET',
>>>>> 'http://www.URL_TO_FETCH_CONTAINING_THE_ABOVE_CODE.dk',
>>>>>         
>>>>>           
>>> true);
>>>     
>>>       
>>>>>             req.onreadystatechange = function () {
>>>>>               if (req.readyState == 4) {
>>>>>                  if(req.status != 404) {
>>>>>                 var path = '//table/tbody/tr/td/font';
>>>>>                 var domParser = new DOMParser();
>>>>>                 var dom = domParser.parseFromString(req.responseText,
>>>>> "text/xml").documentElement;
>>>>>
>>>>>                 var obj =
>>>>>
>>>>>         
>>>>>           
>>> dom.evaluate(path,dom,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
>>> null);
>>>     
>>>       
>>>>>                 for (var k = 0; k < obj.snapshotLength; k++) {
>>>>>                     obj2 = obj.snapshotItem(k).parentNode;
>>>>>                     var nodes = obj2.childNodes;
>>>>>
>>>>>                     dump("Found keys: "+nodes.length+"\n");
>>>>>                     var menu =
>>>>>         
>>>>>           
>>> nodes[0].textContent.trim().split("#");
>>>     
>>>       
>>>>>                     roundinfo.heroesnick = menu[0].trim();
>>>>>                     roundinfo.heroesid = menu[1].trim();
>>>>>                     dump("Nick is: "+roundinfo.heroesnick+"\n");
>>>>>                     dump("ID is: "+roundinfo.heroesid+"\n\n");
>>>>>                 }
>>>>>                  }
>>>>>                  else
>>>>>                   dump("Error loading page with status"+ reg.status
>>>>>         
>>>>>           
>>> +"\n");
>>>     
>>>       
>>>>>               }
>>>>>             };
>>>>>             req.send(null);
>>>>>
>>>>>
>>>>> But this only results in this:
>>>>> Error: syntax error
>>>>> Source File: chrome://browser/content/browser.xul
>>>>> Line: 1, Column: 62
>>>>> Source Code:
>>>>> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
>>>>>
>>>>>         
>>>>>           
>>> Transitional//EN">-------------------------------------------------------------^
>>>     
>>>       
>>>>> Any tips on how to do this "right"?
>>>>>
>>>>>
>>>>>
>>>>> My regards.
>>>>>
>>>>> _______________________________________________
>>>>> Project_owners mailing list
>>>>> Project_owners at mozdev.org
>>>>> http://mozdev.org/mailman/listinfo/project_owners
>>>>>
>>>>>
>>>>>         
>>>>>           
>>>> _______________________________________________
>>>> Project_owners mailing list
>>>> Project_owners at mozdev.org
>>>> http://mozdev.org/mailman/listinfo/project_owners
>>>>
>>>>
>>>>
>>>>       
>>>>         
>>> _______________________________________________
>>> Project_owners mailing list
>>> Project_owners at mozdev.org
>>> http://mozdev.org/mailman/listinfo/project_owners
>>>
>>>
>>> _______________________________________________
>>> Project_owners mailing list
>>> Project_owners at mozdev.org
>>> http://mozdev.org/mailman/listinfo/project_owners
>>>
>>>
>>>     
>>>       
>> _______________________________________________
>> Project_owners mailing list
>> Project_owners at mozdev.org
>> http://mozdev.org/mailman/listinfo/project_owners
>>
>>
>>   
>>     
>
>
> _______________________________________________
> Project_owners mailing list
> Project_owners at mozdev.org
> http://mozdev.org/mailman/listinfo/project_owners
>
>
>   




More information about the Project_owners mailing list