問題タブ [jsdom]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3199 参照

javascript - Node.jsのスクレイピング、画像の変換src->完全なURL

Cheerio(https://github.com/MatthewMueller/cheerio)を使用して、Webサイトをスクレイプし、作業中のプロジェクトの画像を取得しています。Node.js(または別のパッケージ)を使用して$(img).attr('src')を完全修飾URLに変換する簡単な方法があるかどうか疑問に思っていますか?「image.jpg」が表示されることもあれば、「../../ image.jpg」が表示されることもありますが、「// somepath/image.jpg」が表示されることもあります。おそらく私はある種の正規表現を見逃しているだけです...お時間をいただきありがとうございます:)

0 投票する
2 に答える
1990 参照

javascript - jsdom で外部スクリプトを実行する方法

私はproducts.jsファイルに次のようなメソッドを持っています:

jsdom env コールバック内で実行したいと考えています:

実行すると、「ハンドラが定義されていません」と表示されます。私は近づいていますか?

0 投票する
1 に答える
2275 参照

jquery - jsdom: jQuery を使用して本文にスクリプトを追加する

jsdom と jQuery を使用して DOM 本体にスクリプトを追加するにはどうすればよいですか? 実際に使用するという明白な答えは$('body').append('<script src="..."></script>')、ドキュメントにスクリプトを追加することになりますhead

これは、私がテストしている基本的な node.js スクリプトです。

次で始まる何かになります。

興味深いことに、<sc ript src="..."></script>これにスペースを追加すると正しく追加されるため、何か (jsdom だと思います) がこのスクリプトをハイジャックして、キャッシュバスター (?) を追加してヘッダーに配置できます。これを引き起こしているのは何ですか?また、代わりにスクリプトを追加するように、それを防ぐにはどうすればよいですか?

その価値のために、

0 投票する
0 に答える
1137 参照

javascript - jsdom と jasmine-node で未定義のウィンドウ

runspecs.jsウィンドウやドキュメントなどのグローバル オブジェクトを初期化するファイルがあります。

specs ディレクトリにあるファイルは、socrates.spec.coffee とそのコンパイル済みファイル socrates.spec.js だけです。

新しいソクラテスが失敗しなかったので、少なくともグローバル・ソクラテスが成功していることがわかります。document と document.cookie を使っているので、そちらでも構いません。ウィンドウが定義されていないのはなぜですか?

0 投票する
1 に答える
1486 参照

node.js - Node.io、JSDOM、または PhantomJs ? または、YQL-data.html.cssselect?

特定の Web サイトをクロールして、関連情報を掘り出す必要があります。最初にサイトを検索して対応する URL を取得する必要があるようです。これをクロールすると詳細情報が得られます。

仮定しましょう、検索URLは

つまり、city2、city3 などがあります。category は、場所とページの category2、category3 などになります。

すべての都市、カテゴリ、場所、およびページを収集しましたが、結果が null でなくなるまでインクリメントできます。

すべての URL を取得したら、各 URL から詳細情報を掘り出す必要があります。特定の必要な情報が JavaScript の一部として利用できることを確認しました。

今、node.io、jsdom、phantomjs を見てきました。私もyqlを見てきました。私はこれに慣れていないので、あなたの経験から、このシナリオで理想的なものを教えてください。

例を挙げることができれば、それは素晴らしいことです。

0 投票する
2 に答える
11882 参照

node.js - jsdom-document.querySelectorは有効になっていますが、ドキュメントにありません

JSDomを使用して、サーバーごとのDOM操作を実行したいと思います。ただし、querySelectorを明示的に有効にしているにもかかわらず、作成されたドキュメントでは未定義です。

でも:

戻り値

jsdomを使用してdocument.querySelectorを正しく機能させるにはどうすればよいですか?

0 投票する
0 に答える
637 参照

jquery - Nodejs + jsdom モジュール、エラー オブジェクト # has no method '$'

I am attempting to make a simple nodejs client that will eventually crawl a given reddit users profile history. Right now i am trying to use the jsdom module to extract the URL

I am attempting to make a simple nodejs client that will eventually crawl a given reddit users profile history. Right now i am trying to use the jsdom module to extract the URL for the next page of results on a given users profile.

I am currently working in ubuntu 12.10 and my versions of npm and nodejs are current.

Here is the code that i have so far. I will include the error message below.

Now for the error message that i am getting after running the client.


There's an interesting pattern worth mentioning here: a JavaScript constructor may return any object (not necesserily this). One could create a constructor function, that returns a proxy object, that contains proxy methods to the "real" methods of the "real" instance object. This may sound complicated, but it is not; here is a code snippet:

The nice thing is that the proxy creation can be automated, if we define a convention for naming the protected methods. I created a little library that does exactly this: http://idya.github.com/oolib/

0 投票する
1 に答える
1381 参照

jquery - jsdom および jquery dom 要素の css スタイルを変更する

node.js サーバーで jdom と jquery を使用しており、次のコードで次の奇妙な動作を観察しました。

考えられるあらゆる方法を使用して、html ページの div に何らかのスタイル (背景色から緑) を追加しようとしました。上記の試みはすべて(私もそれらのいずれかが独立して機能するかどうかを確認するために1つずつ試しました)、次のような同じ結果を生成しました:<div id="somedivid" style="">

スタイルは書き込まれませんが (引用符内は常に空です)、元のドキュメントを確認すると、これらの div にスタイル属性がなかった場合にスタイル属性が追加されるため、これはバグでしょうか。カスタムCSSスタイルブロックのページの上部に手動で作成したクラスselを追加すると、機能しますが、あなたがそうすべきだと思うのとまったく同じです。問題は、jsdom の使用中に個々のオブジェクトのスタイルを動的に変更できるようにしたいということです。これがバグなのか、何か見落としているのか、誰にもアイデアがありますか?

ちなみに、このコードは標準のjqueryを実行している通常のブラウザでも問題なく動作するので、なんとなくjsdomの実装になりそうです。

0 投票する
5 に答える
3831 参照

node.js - jsdom と node.js でメモリがリークしている

答えが常にあった同様の問題を抱えている人々への参照をいくつか見つけました。完了したら必ず window.close() を呼び出してください。ただし、それは私にとってはうまくいかないようです(ノード0.8.14およびjsdom 0.3.1)

シンプルな再現

私が得る出力は

この時点で、ファンが暴走し、テストは実際に停止します...または少なくとも非常にゆっくりと進み始めます

メモリリークを取り除くためのwindow.close以外のヒントはありますか(またはメモリリークのように見えます)

ありがとう!

ピーター

0 投票する
2 に答える
297 参照

jquery - Cloud Foundry デプロイメント用の .js スクリプト ファイルを追加する

私はいくつかの node.js コードを使用しており、バックエンド css セレクター用のファイルがjsdom必要です。jquery.min.jsローカルでは問題なく動作しましたが、 vmc pushonを使用してデプロイするとapi.cloudfoundry.com502 Bad Gateway nginxが表示されました

ここのようにpackage.jsonですべての依存関係を宣言する必要があると思いますhttp://blog.nodejitsu.com/package-dependencies-done-right

しかし、私は含める方法がわかりませんjquery.min.js。現在、それは/libフォルダーではなく/node_modulesフォルダーにあります(ノードモジュールではないため)。

Cloud Foundry に適切な依存関係とその他の追加の .js ファイルを含める方法について誰か助けてもらえますか?

更新 1:

たくさんのものを削除した後の私のコードは次のとおりです。をコメントアウトしてjsdom.envもエラーにはなりません。

使ってみた感想はこちらvmc logs hp-myapp

localhost:3000私はうまく走ったので文脈化することはできませんhttps://github.com/tmpvar/jsdom/issues/436