Javascript通过Node的ID检索绝对XPATH

时间:2014-03-06 11:22:23

标签: javascript xpath

你好我试图通过节点的ID来检索文档的XPATH,我看到这是一个简单的事情,看一下这个代码很简单:

// IFRAME [@ ID =键];

但是它不起作用,我已经尝试了我能想到的每种语法组合而不是运气,打印输出是“未定义的”。这是我的代码

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); });

                }

我试图在iframe中获取xpath,所以我想我必须先将它指向iframe的ifpath

2 个答案:

答案 0 :(得分:1)

如果要在iframe中找到元素,则需要在iframe中的文档上使用evaluate方法,例如

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

但是如果你设置src加载一个HTML文档,不要期望能够在代码设置src中访问文档中的节点,而是设置一个onload事件处理程序,等待文档加载完毕。然后,您可以在事件处理程序中访问已加载文档中的节点。

答案 1 :(得分:0)

您将获得undefined,因为您的xpath语法转换为JavaScript中的代码注释。

你可能想要的是:

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

请注意引号字符,它使您的xpath成为字符串文字值。