如何在 Node.js 中使用 JQuery 选择器

2024-01-04

我正在尝试从硬盘驱动器中的 HTML 文件中提取电子邮件信息。

如果我在 Firefox 中加载文件并运行 jQuerify bookmarklet,我可以成功使用以下选择器/函数

window.jQuery("a.iEmail").each(function(el) {
  console.log(window.jQuery(this).attr('href'))
});

但在 Node.js 中使用它不起作用

var document = require("jsdom").jsdom(),
  script = document.createElement("script"),
  fs = require('fs');

fs.readFile('file_1.html', 'utf-8', function(err, data){
  if (err) {
    throw err;
  }

  // This output the document
  //console.log(data)

  var window = document.createWindow(data);

  script.src = 'http://code.jquery.com/jquery-1.4.2.js';
  script.onload = function() {
    console.log(window.jQuery.fn.jquery);
    // outputs: 1.4.2
    //console.log(window.jQuery);

    /*
     * This line works if i load the local file in firefox and execute
     * the jQuerify bookmarlet
     */
    window.jQuery("a.iEmail").each(function(el) {
      console.log(window.jQuery(this).attr('href'))
    });
  };
  document.head.appendChild(script);
});

我现在知道问题是什么了。

html 数据必须在文档创建调用中传递,因此代码如下所示:

var jsdom = require("jsdom"),
    fs = require('fs');

fs.readFile('file_1.html', 'utf-8', function(err, data){
  if (err) {
    throw err;
  }

  // This output the document
  //console.log(data)

  // HTML data should be in document creation call
  var document = jsdom.jsdom(data); // data is the html content
  var script = document.createElement("script");

  // HTML data SHOULD NOT be in window creation call
  var window = document.createWindow();

  script.src = 'http://code.jquery.com/jquery-1.4.2.js';
  script.onload = function() {
    console.log(window.jQuery.fn.jquery);
    // outputs: 1.4.2
    //console.log(window.jQuery);

    /*
     * This line works if i load the local file in firefox and execute
     * the jQuerify bookmarlet
     */
    window.jQuery("a.iEmail").each(function(el) {
      console.log(window.jQuery(this).attr('href'))
    });
  };
  document.head.appendChild(script);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Node.js 中使用 JQuery 选择器 的相关文章

随机推荐

  • PHP - 比较两个多维数组

    我有两个包含数据的数组 我需要比较这两个数组并创建一个最终数组 这是我的情况 grab a list of the folders folders glob GLOB ONLYDIR create empty array s which w
  • 重试 Visual Studio C# 测试方法

    我很好奇是否有任何内置机制可以retry在 Visual Studio 2008 C 单元测试框架中进行测试 举个例子 我有一个 C 单元测试 如下所示 TestMethod public void MyMethod DoSomething
  • 从一个 dagger 2 模块如何访问另一个 dagger 2 模块中提供的 SharedPreferences

    从一个 dagger2 模块提供 SharedPreferences 后 在另一个 dagger2 模块中想要使用它 怎么做 下面的代码似乎不起作用 组件 Singleton Component modules arrayOf DataMa
  • Redis 6 可以利用多核 CPU 的优势吗?

    Since Redis 6支持多线程IO https redislabs com blog diving into redis 6 在超过2个核心的机器上部署Redis有意义吗 它是否能够利用额外的核心 或者 2 个核心仍然是理想的选择 一
  • 计算阿克曼函数的较大值

    我有一些代码 int CalculateAckermann int x int y if x return y if y return CalculateAckermann x 1 else return CalculateAckerman
  • 返回 Fortran 中不同长度的字符串数组

    我想创建一个类型来包含 Fortran 中的字符串数组 而无需显式分配长度 以便我可以从函数返回它 以下是我的类型 type returnArr Character dimension 4 array end type returnArr
  • 由于 JSON 中转义的单引号,jQuery.parseJSON 抛出“无效 JSON”错误

    我正在使用以下方式向我的服务器发出请求jQuery post 我的服务器正在返回 JSON 对象 例如 var value 但是 如果任何值包含单引号 正确转义 如 jQuery 无法解析有效的 JSON 字符串 这是我的意思的一个例子 在
  • Numpy 每行动态切片

    如何在不使用 for 循环的情况下动态地对给定开始和结束索引的每一行进行切片 我可以使用下面列出的循环来完成此操作 但是对于 x shape 0 gt 1 mill 的情况来说 它太慢了 x np arange 0 100 x x resh
  • 自动缩放 ImageIcon 以适应标签大小

    在我的 JFrame 上 我使用以下代码在面板上显示图像 ImageIcon img new ImageIcon res png jLabel setIcon img 我想 自动调整 标签中图片的大小 事实上 有时图像大小只有几个像素 有时
  • 清除命名图的最有效方法?

    我正在使用 Ontotext GraphDB 的一个实例 并且经常想要清除具有大量三元组的命名图 目前 我的技术涉及向图形服务器发出 SPARQL 命令 该命令搜索并匹配指定图形中每个三元组的三元组模式 DELETE GRAPH examp
  • 如何编写一个 clang 插件在编译时向原始代码注入一些代码

    我遇到了一个关于如何编写一个能够更改代码的 clang 插件的问题 我想向程序中注入一些代码 就像这样 在此处输入代码 the original code the filename is user code cpp int f1 retur
  • 现有应用程序的转换以兼容iphone5? [复制]

    这个问题在这里已经有答案了 可能的重复 如何开发或迁移适用于 iPhone 5 屏幕分辨率的应用程序 https stackoverflow com questions 12395200 how to develop or migrate
  • 如何在 activerecord 之外创建 activerecord 样式验证?

    我正在为我公司编写的软件开发一个测试框架 我们的产品是基于网络的 在运行 RESTful 请求后 我想处理结果 我希望能够在每个命令类中进行 activerecord 类型验证 以便在运行后 结果会自动针对所有 验证 进行测试 但是 我不知
  • 本地图像未在发布和 TestFlight 中渲染

    使用react native v0 63 4 并且所有本地图像在开发模式下加载良好
  • WPF - 从流加载字体?

    我有一个包含字体文件 ttf 内容的 MemoryStream 我希望能够从该流创建 FontFamily WPF 对象WITHOUT将流的内容写入磁盘 我知道这对于 System Drawing FontFamily 是可能的 但我不知道
  • Javascript背景颜色随着淡入淡出而闪烁

    我有一个 div 需要有持续闪烁的背景颜色 我想要它做的就是淡入透明的 to red并循环返回 我见过几个examples这样做 但它们都会影响整个内容div而不仅仅是background color 其他例子有闪烁background但这
  • UIWebView canGoBack 和 canGoForward 始终返回 NO

    我正在尝试将数据直接加载到UIWebView webView loadData data MIMEType text html textEncodingName utf 8 baseURL nil 数据是一些包含一些外部链接的html字符串
  • 去掉最后一个逗号

    当我的程序打印出整数 5 到 1 时 我需要帮助去掉最后一个逗号 int i for i 10 i gt 1 i if i 2 0 System out print i 2 它打印出来5 4 3 2 1 我想要打印出来5 4 3 2 1 一
  • System.Array 是否对值类型执行装箱?

    我最近做了一些粗略的性能测量List lt gt vs 对于一系列小型结构 System Array 似乎轻而易举地获胜了 所以我就这么做了 我才刚刚意识到 System Array 包含对象类型 所以用结构填充它肯定会导致装箱发生吗 然而
  • 如何在 Node.js 中使用 JQuery 选择器

    我正在尝试从硬盘驱动器中的 HTML 文件中提取电子邮件信息 如果我在 Firefox 中加载文件并运行 jQuerify bookmarklet 我可以成功使用以下选择器 函数 window jQuery a iEmail each fu