1

JSDOM の「スクリプト」オプションを使用して、スクレイピング用に jquery をロードできます。しかし、npm に jquery が含まれるようになったので、ノード独自の require メカニズムを使用することが可能かどうか、また良くも悪くも疑問に思っていました。

jsdom = require 'jsdom'

config =
  html: "<html><body></body></html>"
  scripts: ['http://code.jquery.com/jquery-1.5.min.js']

jsdom.env config, (err, window) ->
  $ = window.jQuery;
  $('body').append("<div class='testing'>Hello World</div>")
  console.log(window.document.innerHTML)

すべて正常に動作し、更新されたドキュメントが表示されます。しかし、最近では次のように実行することもできます。

$ = require 'jquery'
$('body').append("<div class='testing'>Hello World</div>")

どちらがきれいだと思いますか-この新しい方法でjqueryとjsdomを使用する方法がよくわかりません。具体的には、window オブジェクトはどこにあるのでしょうか?

4

3 に答える 3

3

以下の最終的な作業コード-node-jqueryの「body」に事前に作成された空のドキュメントがあるようです。最終的なドキュメントにアクセスするには、.html()を実行するだけです。

var $ = require('jquery')
$('body').append("<div class='testing'>Hello World</div>")
console.log($("body").html())
于 2011-08-07T10:07:26.993 に答える
1

本当に窓口に行く必要がある場合:

var jquery = require('jquery');
var ctx = jquery('<p>this is some markup</p>');
console.log(ctx[0].ownerDocument._parentWindow);

注意して使用してください。プロパティは非公開._と見なされます

于 2011-08-18T16:21:55.727 に答える
0

私はあなたがこれを行うことができるとは思わない. jQueryモジュールを取得するのwindowに対し、JSDOMオブジェクトからjQueryオブジェクトの特定のインスタンスを取得しています。代わりに、その JSDOM ウィンドウに固有require 'jquery'のバージョンのオブジェクトが必要です。jQuery$ = window.jQuery

于 2011-08-06T23:46:16.947 に答える