user2739518
user2739518

Reputation: 227

Javascript retrieve absolute XPATH via ID of Node

Hello am trying to retrieve the XPATH of a document via the ID of the node, I saw this to be a simple matter when looking at the code a simple:

//iframe[@id=key];

But it won't work, I've tried every combination of syntax I can think of and not luck, the print out is "undefined". This is my code

function getNode(htmlURL, filename, xpath, callback){
                var key = filename+xpath;

                var frame =  document.getElementById(key);         

                frame.addEventListener("load", function(evt){
                var value= frame.contentDocument.evaluate(xpath, frame.contentDocument, null,9,null);
                if(value!=null){

                callback(value);

                }           
                }, false);

                frame.contentWindow.location.href = htmlURL;

                }

                function init(htmlURL, filename, xpath){

                getNode(htmlURL, filename, xpath, function(node) { console.debug(node.outerHTML); });

                }

Am trying to get the xpath inside the iframe, so I thought I'd have to point it to the xpath to the iframe first

Upvotes: 0

Views: 546

Answers (2)

Martin Honnen
Martin Honnen

Reputation: 167516

If you want to find an element inside of an iframe then you need to use the evaluate method on the document in the iframe e.g.

frame.contentDocument.evaluate(xpath, frame.contentDocument, null,9,null)

But if you set the src to load an HTML document don't expect to be able to access nodes in the document in your code setting the src, instead set up an onload event handler to wait until the document has been loaded. In the event handler you can then access the nodes in the loaded document.

Upvotes: 1

Scott Heaberlin
Scott Heaberlin

Reputation: 3424

You are getting undefined because your xpath syntax translates to a code comment in JavaScript.

What you probably want is:

        var finalxpath = "//iframe[@id=key]";

Note the quote characters which makes your xpath a string literal value.

Upvotes: 0

Related Questions