【发布时间】:2012-10-29 08:52:17
【问题描述】:
如何使用 jsdom 和 jQuery 将脚本附加到 DOM 主体?使用$('body').append('<script src="..."></script>') 的明显答案实际上最终会在文档head 中添加脚本。
这是我正在测试的基本 node.js 脚本:
var jsdom = require('jsdom');
jsdom.env(
"http://google.com",
['http://code.jquery.com/jquery-1.6.min.js'],
function(err, window) {
var $ = window.jQuery;
$('body').append('<script src="http://example.com/script.js"></script>');
console.log($('html').html());
}
);
这导致某些内容以:
开头<head><script src="http://example.com/script.js?_=1352426933034"></script>...
有趣的是,如果您在<sc ript src="..."></script> 中添加一个空格,那么它会正确附加,所以某些东西(我希望是 jsdom)正在劫持这个脚本,因此它可以添加 cachebuster(?) 并将其放在标题中。是什么导致了这种情况以及我如何防止它发生所以它会改为附加脚本?
为了它的价值,
$ npm ls
/Users/codyaray/dev/proxy/test
└─┬ jsdom@0.2.19
├─┬ contextify@0.1.3
│ └── bindings@1.0.0
├── cssom@0.2.5
├── cssstyle@0.2.3
├── htmlparser@1.7.6
└─┬ request@2.11.4
├─┬ form-data@0.0.3
│ ├── async@0.1.9
│ └─┬ combined-stream@0.0.3
│ └── delayed-stream@0.0.5
└── mime@1.2.7
【问题讨论】:
-
不是答案,但您可以尝试使用cheerio