2012-11-24 38 views
6

से अनुपलब्ध है, मैं कुछ सर्वर-वार डोम मैनिपुलेशन करने के लिए JSDom का उपयोग करना चाहता हूं। हालांकि, explcitly querySelector को सक्षम करने के बावजूद, यह अनिर्धारित बनाए गए दस्तावेज़ों में है:jsdom - document.querySelector सक्षम है, लेकिन दस्तावेज़

var jsdom = require('jsdom'); 

// Yep, we've got QuerySelector turned on 
jsdom.defaultDocumentFeatures = { 
    QuerySelector: true 
}; 

var dom = jsdom.defaultLevel; 

var document = jsdom.jsdom("<html><body><h1>Hello StackOverflow</h1></body></html>"), 
window = document.createWindow(); 
हालांकि

:

console.log(document.querySelector) 

रिटर्न

undefined 

मैं ठीक से jsdom का उपयोग कर document.querySelector काम कर सकते हैं कैसे ?

+0

आप jQuery का उपयोग क्यों नहीं करते हैं? – NiLL

+1

@NiLL क्योंकि JQuery के पास बहुत सारे कोड हैं जिनकी मुझे आवश्यकता नहीं है और क्वेरी चयनकर्ता को अधिकांश वातावरण में बॉक्स से बाहर प्रदान किया जाता है जहां कोड चलाया जाएगा (यानी, सभी मौजूदा ब्राउज़र)। – mikemaccana

उत्तर

10

इस एक का जवाब मिला।

जेएसडॉम के पास 'डिफ़ॉल्ट दस्तावेज़' है और साथ ही साथ कई अतिरिक्त दस्तावेज़ों के लिए समर्थन भी है।

मेरी मूल समझ यह थी कि डिफ़ॉल्ट दस्तावेज़ पर क्वेरी सिलेक्टर को सक्षम करने से यह सभी दस्तावेजों पर सक्षम हो जाएगा। यह गलत था।

मुझे क्वेरी बनाने वाले (गैर-डिफ़ॉल्ट) दस्तावेज़ पर क्वेरी चयनकर्ता को सक्षम करने की आवश्यकता थी।

कार्य नीचे कोड:

var jsdom = require('jsdom'); 

var dom = jsdom.defaultLevel; 

// QuerySelector must be turned on on the specificdocument we're creating 
var document = jsdom.jsdom("<html><body><h1>Hello</h1></body></html>", null, { 
    features: { 
    QuerySelector: true 
    } 
}), 
window = document.createWindow(); 

console.log(document.querySelector) 

चल रहा है अब पता चलता समारोह मौजूद है।

+0

कम से कम '9.2.1' में काम नहीं कर रहा है: 'TypeError: document.createWindow फ़ंक्शन नहीं है' –