1
YuJianrong 2016-06-01 11:38:47 +08:00
Solution the hard mode:
你可以用 browserify 来在浏览器中加载一个 node 的 html parser ,比如这个 https://github.com/oyyd/htmlparser2-without-node-native 这就可以用 JS parse html. html2 自带一个 dom handler ,所以不仅是 sax 风格的 parser , dom 也可以 parser 出来。 如果你这还觉得麻烦想用 jQuery 风格的 API 来操纵这个 dom tree ,还有 cheerio 这个 module 可选: https://www.npmjs.com/package/cheerio-without-node-native 注:单纯 htmlparser2 打包大约 140K, 加上 cheerio 700 多 K Solution the easy mode: 如果你们无所谓 XSS 攻击( html 文本里的 js 会执行)的话,大可这样: var d = document.createElement("div"); d.innerHTML = [youHtmlText] 然后你就可以用 d 的 children 来处理了。 |
2
xudd OP @YuJianrong 非常感谢, easy mode 不适用,我尝试一下 hard mode 吧,再次感谢!
|
3
xudd OP @YuJianrong 不过您说的 hard mode 都是在 node 环境下吗?我们没有用 node ,我也还不会用 node ,(尴尬脸;
|
4
YuJianrong 2016-06-01 17:29:19 +08:00 1
@xudd nodejs 环境只是为了用 browserify(node 写的一个工具)造出一个浏览器能用的 JS 包,之后就不再需要 node 环境了。
使用方法非常简单: 1. 下载并安装 nodejs: https://nodejs.org/en/download/ 2. 安装 browserify: (如果 npm 被墙请使用 cnpm: https://npm.taobao.org/ ) npm install -g browserify 3. 新建一个文件夹,在文件夹里安装 htmlparser2 依赖: mkdir tmp cd tmp npm install htmlparser2-without-node-native 4. 新建一个文件 main.js, 填入以下内容,为把 htmlparser2 导出去做准备: window.htmlParser = require("htmlparser2-without-node-native"); 5. 用 browserify 打包 browserify main.js -o bundle.js 然后你就得到一个 bundle.js ,引入 html 运行之后, window 上就有一个 htmlParser 的 constructor ,下面就可以按 htmlparser2 的用法在前端使用了。 要用更方便的 cheerio 的方法类似。 |
5
xudd OP @YuJianrong 问题已经解决了,就用 jquery 就行,非常感谢您的帮助!
|
6
YuJianrong 2016-06-01 20:45:36 +08:00
@xudd 呃……所以我一开始就问是不是无所谓 XSS 攻击……
|