I am also running jsdom, and have been seeing an old error pop back -
the jsdom script executor is throwing 'ReferenceError: navigator is
not defined' nearly every script I execute.

I suspect this is on node.js' end, but I am still digging.  The reason
I post here is that I also saw this after a v0.4.11 upgrade to v0.6.15
of node.

On Apr 25, 6:17 pm, toranb <[email protected]> wrote:
> How can I tell if the script is being executed viajsdom? I assumed it
> was node but wanted to be sure.
>
> I'll need to look into this a bit more to verify if this is ajsdom
> issue or something related to node itself
>
> Thanks for the in-depth answer!
>
> Toran
>
> On Apr 25, 7:24 pm, Elijah Insua <[email protected]> wrote:
>
>
>
>
>
>
>
> > On Wed, Apr 25, 2012 at 11:28 AM, toranb <[email protected]> wrote:
> > > I've been using jasmine to unit test my javascript the last few
> > > months. I've been running these tests with node (v4)jsdom/jasmine-
> > > node/jasmine-jquery
>
> > > Everything was fine until I had to upgrade from node v4 -I did a make
> > > install from the 6.11 build and noticed that I had to updatejsdom.
>
> > >jsdomand orjsdom+ node seems to have changed how it views the
> > > "window" keyword.
>
> > is this in the context ofjsdom'sscript executor or node's? I'm assuming
> > the former, but that is still weird.  Thejsdomscript context doesn't
> > define a 'global' variable.  It is more likely that the string
> > representation of a window is incorrect.
>
> > Here's how I came to that conclusion:
>
> > Code:
>
> > require('jsdom').env({
> >   html : "<html><head></head><body></body></html>",
> >   src  : "window.stringified = window + ''; window.typeofGlobal = typeof
> > global; window.keys = Object.keys(window)",
> >   done : function(err, window) {
> >     console.log('[jsdomcontext] window.stringified:', window.stringified,
> > '\n');
> >     console.log('[jsdomcontext] typeof global:', window.typeofGlobal,
> > '\n');
> >     console.log('[jsdomcontext] window.keys:',
> > JSON.stringify(window.keys), '\n');
> >     console.log('[node context] window === global: ' + (window === global),
> > '\n');
> >   }
>
> > });
>
> > Output:
>
> > tmp‣ node window-global.js
> > [jsdomcontext] window.stringified: [object global]
>
> > [jsdomcontext] typeof global: undefined
>
> > [jsdomcontext] window.keys:
> > ["location","addEventListener","removeEventListener","dispatchEvent","raise 
> > ","setTimeout","setInterval","clearInterval","clearTimeout","__stopAllTimer 
> > s","run","getGlobal","dispose","top","parent","self","frames","window","doc 
> > ument","stringified","typeofGlobal","_length","length","close","getComputed 
> > Style","console","navigator","XMLHttpRequest","name","innerWidth","innerHei 
> > ght","outerWidth","outerHeight","pageXOffset","pageYOffset","screenX","scre 
> > enY","screenLeft","screenTop","scrollX","scrollY","scrollTop","scrollLeft", 
> > "alert","blur","confirm","createPopup","focus","moveBy","moveTo","open","pr 
> > int","prompt","resizeBy","resizeTo","scroll","scrollBy","scrollTo","screen" 
> > ,"Image","languageProcessors","resourceLoader","HTMLCollection","HTMLOption 
> > sCollection","HTMLDocument","HTMLElement","HTMLFormElement","HTMLLinkElemen 
> > t","HTMLMetaElement","HTMLHtmlElement","HTMLHeadElement","HTMLTitleElement" 
> > ,"HTMLBaseElement","HTMLIsIndexElement","HTMLStyleElement","HTMLBodyElement 
> > ","HTMLSelectElement","HTMLOptGroupElement","HTMLOptionElement","HTMLInputE 
> > lement","HTMLTextAreaElement","HTMLButtonElement","HTMLLabelElement","HTMLF 
> > ieldSetElement","HTMLLegendElement","HTMLUListElement","HTMLOListElement"," 
> > HTMLDListElement","HTMLDirectoryElement","HTMLMenuElement","HTMLLIElement", 
> > "HTMLDivElement","HTMLParagraphElement","HTMLHeadingElement","HTMLQuoteElem 
> > ent","HTMLPreElement","HTMLBRElement","HTMLBaseFontElement","HTMLFontElemen 
> > t","HTMLHRElement","HTMLModElement","HTMLAnchorElement","HTMLImageElement", 
> > "HTMLObjectElement","HTMLParamElement","HTMLAppletElement","HTMLMapElement" 
> > ,"HTMLAreaElement","HTMLScriptElement","HTMLTableElement","HTMLTableCaption 
> > Element","HTMLTableColElement","HTMLTableSectionElement","HTMLTableRowEleme 
> > nt","HTMLTableCellElement","HTMLFrameSetElement","HTMLFrameElement","HTMLIF 
> > rameElement","_augmented","INVALID_STATE_ERR","SYNTAX_ERR","INVALID_MODIFIC 
> > ATION_ERR","NAMESPACE_ERR","INVALID_ACCESS_ERR","StyleSheet","MediaList","C 
> > SSStyleSheet","CSSRule","CSSStyleRule","CSSMediaRule","CSSImportRule","CSSS 
> > tyleDeclaration","StyleSheetList","mapper","mapDOMNodes","visitTree","markT 
> > reeReadonly","INDEX_SIZE_ERR","DOMSTRING_SIZE_ERR","HIERARCHY_REQUEST_ERR", 
> > "WRONG_DOCUMENT_ERR","INVALID_CHARACTER_ERR","NO_DATA_ALLOWED_ERR","NO_MODI 
> > FICATION_ALLOWED_ERR","NOT_FOUND_ERR","NOT_SUPPORTED_ERR","INUSE_ATTRIBUTE_ 
> > ERR","exceptionMessages","DOMException","NodeList","DOMImplementation","Nod 
> > e","NamedNodeMap","AttrNodeMap","NotationNodeMap","EntityNodeMap","Element" 
> > ,"DocumentFragment","ProcessingInstruction","Document","CharacterData","Att 
> > r","Text","Comment","CDATASection","DocumentType","Notation","Entity","Enti 
> > tyReference"]
>
> > [node context] window === global: false
>
> > So as you can see above, the window object does have all of the expected
> > props/method and it is not the same as node's global object.
>
> > I hope that helps, and if you do find a sidecase please report it 
> > (https://github.com/tmpvar/jsdom/issues)
>
> > Oh, and for future reference there is a mailing list forjsdomspecific
> > issues/questions (http://groups.google.com/group/jsdom)
>
> > -- Elijah

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to