By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
437,712 Members | 2,174 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 437,712 IT Pros & Developers. It's quick & easy.

turn lump of text into a parseable document

P: n/a
In my first experimentation with js, I'm writing a greasemonkey script
which adds links to a page which, when clicked, will replace their
parent element with the contents of an element from another URL.

in the following function, pageHTML contains the entire text of an HTML
page, pulled in via GM_xmlhttprequest. The page contains a ul with
id="commentlisting". What I want to do, but can't seem to do, is turn
that lump of html in the pageHTML variable into a document that I can
run document.evaluate and document.getElementById on, just like I can
on the original page.

The second catch below alerts me with "TypeError:
tempnode.getElementById is not a function"
function getExpandedHTML(oldid, pageHTML)
{
GM_log("getExpanded started");
var tempNode;
try {
tempnode = document.createElement("document");
tempnode.innerHTML = pageHTML;
}
catch (e)
{
alert(e);
}
var listnode;
try {
listnode = tempnode.getElementById("commentlisting");
} catch (e)
{
alert(e);
}
//var innerlinks = listnode.evaluate("//a[@href]", listnode,
null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
//addlinkevenets(oldid, innerlinks);

GM_log("getExpanded finished");
return listnode.innerHTML;
}

Sep 24 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a


ja************@gmail.com wrote:

The second catch below alerts me with "TypeError:
tempnode.getElementById is not a function"
function getExpandedHTML(oldid, pageHTML)
{
GM_log("getExpanded started");
var tempNode;
try {
tempnode = document.createElement("document");
tempnode.innerHTML = pageHTML;
You are creating an _element_ node and set its innerHTML, you are not
creating a _document_ node. Thus that
listnode = tempnode.getElementById("commentlisting");


fails as only document nodes implement the method getElementById.

As far as I know currently browsers like Mozilla or Opera do not provide
an API to script to parse some string with HTML markup into an HTML
document so you might need to help yourself with creating an iframe and
writing the markup in there. But that will then for instance load images
or other stuff in the HTML so it is not an in memory operation.


--

Martin Honnen
http://JavaScript.FAQTs.com/
Sep 24 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.