jsdom:使用jQuery将脚本附加到body

如何使用jsdom和jQuery将脚本附加到DOM主体? 使用$('body').append('<script src="..."></script>')的明显答案实际上是在文档head添加脚本。

这是我testing的基本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 

我只是遇到了这个问题与jsdom,只是我想追加<script><head>

以下代码:

 $('head').append('<script type="text/javascript" src="script.js"></script>'); 

导致了这一点:

 <head> <script type="text/javascript" src="script.js"></script> <script src="script.js?_=1352426933034"></script> </head> 

这似乎只是在添加src属性已经设置的<script>元素时才会发生。 当你第一次追加空的<script>然后设置它的src如下所示似乎都是正确的:

 $('<script>').appendTo($('head')).attr('src','script.js');