問題タブ [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.
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」が表示されることもあります。おそらく私はある種の正規表現を見逃しているだけです...お時間をいただきありがとうございます:)
javascript - jsdom で外部スクリプトを実行する方法
私はproducts.jsファイルに次のようなメソッドを持っています:
jsdom env コールバック内で実行したいと考えています:
実行すると、「ハンドラが定義されていません」と表示されます。私は近づいていますか?
jquery - jsdom: jQuery を使用して本文にスクリプトを追加する
jsdom と jQuery を使用して DOM 本体にスクリプトを追加するにはどうすればよいですか? 実際に使用するという明白な答えは$('body').append('<script src="..."></script>')
、ドキュメントにスクリプトを追加することになりますhead
。
これは、私がテストしている基本的な node.js スクリプトです。
次で始まる何かになります。
興味深いことに、<sc ript src="..."></script>
これにスペースを追加すると正しく追加されるため、何か (jsdom だと思います) がこのスクリプトをハイジャックして、キャッシュバスター (?) を追加してヘッダーに配置できます。これを引き起こしているのは何ですか?また、代わりにスクリプトを追加するように、それを防ぐにはどうすればよいですか?
その価値のために、
javascript - jsdom と jasmine-node で未定義のウィンドウ
runspecs.js
ウィンドウやドキュメントなどのグローバル オブジェクトを初期化するファイルがあります。
specs ディレクトリにあるファイルは、socrates.spec.coffee とそのコンパイル済みファイル socrates.spec.js だけです。
新しいソクラテスが失敗しなかったので、少なくともグローバル・ソクラテスが成功していることがわかります。document と document.cookie を使っているので、そちらでも構いません。ウィンドウが定義されていないのはなぜですか?
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を見てきました。私はこれに慣れていないので、あなたの経験から、このシナリオで理想的なものを教えてください。
例を挙げることができれば、それは素晴らしいことです。
node.js - jsdom-document.querySelectorは有効になっていますが、ドキュメントにありません
JSDomを使用して、サーバーごとのDOM操作を実行したいと思います。ただし、querySelectorを明示的に有効にしているにもかかわらず、作成されたドキュメントでは未定義です。
でも:
戻り値
jsdomを使用してdocument.querySelectorを正しく機能させるにはどうすればよいですか?
jquery - jsdom および jquery dom 要素の css スタイルを変更する
node.js サーバーで jdom と jquery を使用しており、次のコードで次の奇妙な動作を観察しました。
考えられるあらゆる方法を使用して、html ページの div に何らかのスタイル (背景色から緑) を追加しようとしました。上記の試みはすべて(私もそれらのいずれかが独立して機能するかどうかを確認するために1つずつ試しました)、次のような同じ結果を生成しました:<div id="somedivid" style="">
スタイルは書き込まれませんが (引用符内は常に空です)、元のドキュメントを確認すると、これらの div にスタイル属性がなかった場合にスタイル属性が追加されるため、これはバグでしょうか。カスタムCSSスタイルブロックのページの上部に手動で作成したクラスselを追加すると、機能しますが、あなたがそうすべきだと思うのとまったく同じです。問題は、jsdom の使用中に個々のオブジェクトのスタイルを動的に変更できるようにしたいということです。これがバグなのか、何か見落としているのか、誰にもアイデアがありますか?
ちなみに、このコードは標準のjqueryを実行している通常のブラウザでも問題なく動作するので、なんとなくjsdomの実装になりそうです。
node.js - jsdom と node.js でメモリがリークしている
答えが常にあった同様の問題を抱えている人々への参照をいくつか見つけました。完了したら必ず window.close() を呼び出してください。ただし、それは私にとってはうまくいかないようです(ノード0.8.14およびjsdom 0.3.1)
シンプルな再現
私が得る出力は
この時点で、ファンが暴走し、テストは実際に停止します...または少なくとも非常にゆっくりと進み始めます
メモリリークを取り除くためのwindow.close以外のヒントはありますか(またはメモリリークのように見えます)
ありがとう!
ピーター
jquery - Cloud Foundry デプロイメント用の .js スクリプト ファイルを追加する
私はいくつかの node.js コードを使用しており、バックエンド css セレクター用のファイルがjsdom
必要です。jquery.min.js
ローカルでは問題なく動作しましたが、 vmc push
onを使用してデプロイするとapi.cloudfoundry.com
、502 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