Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

In a userscript i am getting [object XrayWrapper [object HTMLSpanElement]] instead of html span tag.

How can i get the html tag like <span>--</span> from this object?

share|improve this question
Please provide more details on what you're doing and/or trying to do. – Oliver Salzburg May 24 '12 at 11:44
I am printing the dynamically created tags by creating a hook to document.createElement method in userscript. The output is presented in web console using console.log(). This gives <span<--</span> in chrome but in firefox the output is shown in [object XrayWrapper [object HTMLSpanElement]] object format – UserPink May 25 '12 at 4:02
Please edit your question to supply that info. – slhck May 25 '12 at 8:24

The only difference is in the toString() method, which determines what happens when you try to turn an object into a primitive. You didn't state what you want to do, but if you're trying to turn a DOM object into HTML textual representation, then the outerHTML property should provide you with what you need.

var element = document.createElement("span");
alert(element.outerHTML); // returns "<span>text</span>"
share|improve this answer
Can this be done without using document.createElement as i am including this code in the hook created for document.createElement this is becoming a never ending loop. can any one help – UserPink May 29 '12 at 4:09
In the above solution where should i add the code which shows [object XrayWrapper [object HTMLSpanElement]] – UserPink May 29 '12 at 4:15
This was just an example. Simply refer to object.outerHTML instead of object in your code. – Witiko May 29 '12 at 9:41
object.outerHTML retrieves the tag but how to obtain the innerHTML of the object without creating a new Element. i tried using object.innerHTML but it is showing undefined – UserPink May 29 '12 at 10:49
I see. It would appear that the XrayWrapper used by Greasemonkey to wrap around DOM Elements is quite an imperfect wrapper, since it doesn't really support the innerHTML getter/setter. I wrote you a simplistic innerHTML implementation, call it like this: html(element). It ignores everything but elements, attributes and text nodes, but it should serve its purpose as long as the XrayWrapper supports the other DOM attributes I use in the function. – Witiko May 29 '12 at 16:03

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .