Merging getComputedStyle and evaluate in Greasemonkey

Posted by Keheliya Gallaba on Stack Overflow See other posts from Stack Overflow or by Keheliya Gallaba
Published on 2011-01-03T03:25:19Z Indexed on 2011/01/03 5:53 UTC
Read the original article Hit count: 187

I need to get all the text nodes with a certain font-face in a page to an array. I tried..

textnodes = document.evaluate("//* [@style='font-family: foo;']//text()["
            + "not(ancestor::script) and not(ancestor::style)]", document,
            null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);

and

textnodes = document.evaluate("//* [@face='foo']//text()["
            + "not(ancestor::script) and not(ancestor::style)]", document,
            null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);

But these does not work with pages that is styled by external CSS files. Seems getComputedStyle() is the way to go. I think what I need is something like..

var tags = document.getElementsByTagName('*');
for (var i in tags) {
    var style = getComputedStyle(tags[i], '');
    if (style.fontFamily.match(/foo/i)) {
        textnodes.push(tags[i]);
        }
    }

But text nodes were not returned in this method. Is there anyway I can use a hybrid of xpath evaluate() and getComputedStyle() or any other way to achieve this?

© Stack Overflow or respective owner

Related posts about JavaScript

Related posts about css