【问题标题】:Edit HTML files manipulating DOM in a jQuery style编辑 HTML 文件以 jQuery 样式操作 DOM
【发布时间】:2012-12-13 03:27:10
【问题描述】:

我有一批 HTML 文件需要一些易于使用 jQuery 执行的版本(主要是选择一些节点并更改它们的属性)。

我实现这一点的方法是在 Google Chrome 中一一打开它们,在控制台中执行 jQuery 代码,然后将生成的 DOM 复制回我的 HTML 编辑器。

由于我目前正在做的事情需要很多时间,而且由于每个文件都需要相同的版本(即,相同的 jQuery/JS 代码适用于每个 HTML 文件),我正在考虑编写一个脚本/程序来执行此操作。

无论如何,我不完全清楚我应该采取以下哪种(如果有的话)方法来完成这项任务。

  1. 使用一些文件系统/文件操作库(哪个?)用 jQuery 编写 JavaScript 脚本

  2. 使用一些基于 jQuery 的库(如 CsQuery)编写 Java 或 C# 程序

  3. 为我的一些编辑器寻找插件(Aptana、Notepad++、Eclipse 等)或支持类似 jQuery 的编辑命令的完全不同的编辑器(就像 notepad++ 正则表达式替换支持一样)。大批量时这会很慢,但至少它可以让我避免烦人的复制/粘贴到/从 Chrome。

其中一种方法是正确的方法来完成我需要的吗? (有没有正确的方法来做到这一点?)哪个应该更直接?

我认为 #2 对我来说会更容易,因为我在 Java 和 C# 方面的经验比在 JavaScript 方面的经验要多得多,但我认为这个想法可能有点像用大锤来破解。

【问题讨论】:

  • 以前没听说过CSQuery,以后可能会派上用场。谢谢:)
  • 没有正确答案 - 但如果您已经编写了 jQuery 代码来执行此操作,那么使用 CsQuery 似乎是一种简单的方法,因为代码应该易于移植。我不会说它是在使用大锤——它只是一个满足你需要的工具。

标签: c# java javascript jquery html


【解决方案1】:

您应该考虑使用PhantomJs。它是一个可以从命令行执行的无头 WebKit。它接受 javascript or coffeescript file 作为参数,可用于例如用网页做一些事情。这是一个例子:

var page = require('webpage').create();
   page.open('http://m.bing.com', function(status) {
      var title = page.evaluate(function(s) {
         return document.querySelector(s).innerText;
      }, 'title');
      console.log(title);
      phantom.exit();
   });

【讨论】:

    【解决方案2】:

    我不确定正确的方法,但听起来您对 C# 很熟悉,并且认为编写类库对于自动化来说开销最小。以下是一些潜在的解决方案:

    1. 脚本库(例如 C#.NET) - 如果您想使用 DOM 操作,可以使用您提到的库或 ScriptSharp 之类的库。如果 HTML 有适当的结束标记,您还可以使用 LINQ 轻松导航 HTML(或 CodePlex 上的 HTML Agility Pack 之类的东西)。我什至建议在 C# 中将 Mustache 与 HTML 文件模板一起使用。

    2. JavaScript 库 - 如果您想继续使用纯 JavaScript,可以使用 Node.js。您可以使用一些文件操作库。

    3. 无头浏览器 - 没想到能够自动保存生成的 HTML,但您可以使用 jsTestDriverPhantom.js 之类的东西

    您也可以在编辑器中使用插件,但我会坚持使用 Java、C#、python 等库,您可以从现有应用程序中调用它们或将其安排为作业/服务。

    【讨论】:

    • asgoth 指出 - 您可以使用带有 Node.js(#2 和 #3 的组合)的 Headless Browsers 来生成 HTML 文件。
    • 谢谢,我认为这是最完整的答案。根据不同的 cmets,我会选择 C# 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 2011-01-12
    • 2011-02-19
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多