javascript – 如何在Windows Script Host中使用jQuery?

我正在处理一些需要解析包含 HTML片段的文件代码.看来jQuery对于这个非常有用,但是当我尝试将jQuery加载到像WScript或CScript这样的东西时,它会引发一个错误,因为jQuery对window对象的引用很多.

在没有浏览器的情况下运行的代码中有什么实际的方法

更新:为了回应评论,我已经成功地编写了JavaScript代码来使用新的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

解决方法

随着您的代码,您可以使用Windows Script Host创建一个IE的实例,将您的html文件加载到实例中,将jQuery动态附加到加载的页面,然后从中添加脚本.

这可以在IE8中使用XP,但我知道Windows 7 / IE9中的一些安全问题.如果遇到问题,可以试试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,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());
        }  
    }
})();

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: <span id=&quot...
jQuery 添加水印 <script src="../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...