2012-12-03 11 views
10

मैं कुछ कोड पर काम कर रहा हूं जिसमें HTML की टुकड़े वाली कई फ़ाइलों को पार्स करने की आवश्यकता है। ऐसा लगता है कि jQuery इसके लिए बहुत उपयोगी होगा, लेकिन जब मैं डब्लूस्क्रिप्ट या सीएसक्रिप्ट जैसे कुछ में jQuery लोड करने का प्रयास करता हूं, तो यह विंडो ऑब्जेक्ट के jQuery के कई संदर्भों के कारण एक त्रुटि फेंकता है।मैं विंडोज स्क्रिप्ट होस्ट में jQuery का उपयोग कैसे करूं?

ब्राउज़र में बिना कोड में jQuery का उपयोग करने के लिए क्या व्यावहारिक तरीका है?

अद्यतन: टिप्पणियों के जवाब में, मैंने new ActiveXObject('Scripting.FileSystemObject'); का उपयोग कर फ़ाइलों की सामग्री को पढ़ने के लिए सफलतापूर्वक जावास्क्रिप्ट कोड लिखा है। मुझे पता है कि ActiveX बुरा है, लेकिन यह कुछ आंतरिक फ़ाइलों में से कुछ डेटा प्राप्त करने के लिए एक आंतरिक प्रोजेक्ट है जिसमें HTML टुकड़े और उचित डेटाबेस में शामिल हैं।

एक और अद्यतन: मेरे कोड अब तक इस तरह के बारे में लग रहा है:

var fileIo, here; 

fileIo = new ActiveXObject('Scripting.FileSystemObject'); 
here = unescape(fileIo.GetParentFolderName(WScript.ScriptFullName) + "\\"); 

(function() { 
    var files, thisFile, thisFileName, thisFileText; 

    for (files = new Enumerator(fileIo.GetFolder(here).files); !files.atEnd(); files.moveNext()) { 
     thisFileName = files.item().Name; 
     thisFile = fileIo.OpenTextFile(here + thisFileName); 
     thisFileText = thisFile.ReadAll();   

     // I want to do something like this: 
     s = $(thisFileText).find('input#txtFoo').val();  
    } 

})(); 

अद्यतन: मैं भी jQuery मंचों पर इस प्रश्न पोस्ट: http://forum.jquery.com/topic/how-to-use-jquery-without-a-browser#14737000003719577

+4

http://stackoverflow.com/questions/2941411/executing-javascript-without-a-browser – pistache

+1

नौकरी के लिए गलत टूल, मैं कहता हूं। यदि आप jQuery चयनकर्ताओं में हैं तो http://code.google देखें .com/p/phpquery /, http://pypi.python.org/pypi/pyquery और अन्य। – soulseekah

+0

यदि आप नोड का उपयोग करते हैं तो आप अंडरस्कोर.जेएस का उपयोग कर सकते हैं, जो आपकी सभी ज़रूरतों के मुकाबले अधिक फिट होना चाहिए। –

उत्तर

3

अपने कोड के साथ के बाद , आप विंडोज स्क्रिप्ट होस्ट का उपयोग कर आईई का एक उदाहरण बना सकते हैं, उदाहरण के लिए अपनी एचटीएमएल फाइल लोड करें, लोड किए गए पेज पर गतिशील रूप से jQuery संलग्न करें, फिर उस से स्क्रिप्ट करें।

यह आईपी 8 में एक्सपी के साथ काम करता है, लेकिन मुझे विंडोज 7/आईई 9 में कुछ सुरक्षा मुद्दों से अवगत है। यदि आप समस्याओं में भाग लेते हैं तो आप lowering your security settings आज़मा सकते हैं।

var fileIo, here, ie; 

fileIo = new ActiveXObject('Scripting.FileSystemObject'); 
here = unescape(fileIo.GetParentFolderName(WScript.ScriptFullName) + "\\"); 
ie = new ActiveXObject("InternetExplorer.Application"); 
ie.visible = true 

function loadDoc(src) { 
    var head, script; 
    ie.Navigate(src); 
    while(ie.busy){ 
    WScript.sleep(100); 
    } 
    head = ie.document.getElementsByTagName("head")[0];  
    script = ie.document.createElement('script'); 
    script.src = "http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"; 
    head.appendChild(script); 
    return ie.document.parentWindow; 
} 

(function() { 
    var files, thisFile, win; 
    for (files = new Enumerator(fileIo.GetFolder(here).files); !files.atEnd(); files.moveNext()) { 
     thisFile = files.item();   
     if(fileIo.GetExtensionName(thisFile)=="htm") { 
      win = loadDoc(thisFile); 
      // your jQuery reference = win.$ 
      WScript.echo(thisFile + ": " + win.$('input#txtFoo').val()); 
     } 
    } 
})(); 
0

यह Cheerio पैकेज के साथ Node.js में करना बहुत आसान है। आप जो भी स्रोत चाहते हैं उससे मनमाने ढंग से एचटीएमएल में पढ़ सकते हैं, इसे चीरियो के साथ पार्स करें और फिर jQuery स्टाइल चयनकर्ताओं का उपयोग करके पार्स किए गए तत्वों तक पहुंचें।

संबंधित मुद्दे