質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

1回答

2658閲覧

node.js http.createServerでdocumentオブジェクトを取得するには

igar

総合スコア110

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

1クリップ

投稿2018/08/03 12:26

node.jsで、サーバーで開いたページのHTMLのdocumentオブジェクトを取得して、queryselectorなどのメソッドを利用するにはどうしたらよいでしょうか。?

以下のように試してみましたができませんでした。

var sys = require('sys'); var http = require('http'); var server = http.createServer( function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.write('Hello World!!'); // // document.Hello World!!を標準出力したい sys.log(response.location.href) ; // #=> エラー TypeError: Cannot read property 'href' of undefined // ページに直接アクセスしてデベロッパーコンソールから出力を試みた場合 // document.querySelector('pre').innerText // "Hello World!!" response.end(); } ).listen(3333, '192.168.3.19');

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

さすがにサーバからクライアントのDOMを叩いてその結果を得る、というのは難しいのではないでしょうか…(それこそWebSocketで返すようにする、とかはちょっと大げさですよね)。

単にNodeでDOMを使いたい、ということであれば、jsdomライブラリがあります。
npm installでjsdomを読み込んでおいて、以下のようにすると、ログが吐かれるはずです。

js

1var sys = require('sys'); 2var http = require('http'); 3 4const jsdom = require("jsdom"); 5const { JSDOM } = jsdom; 6 7var server = http.createServer( 8 function (request, response) { 9 response.writeHead(200, {'Content-Type': 'text/plain'}); 10 str = 'Hello World!!'; 11 response.write(str); 12 13 const dom = new JSDOM(str); 14 sys.log(dom.window.document.querySelector("*").textContent) ; 15 16 response.end(); 17 } 18).listen(3333, '127.0.0.1');

こんな感じで、サーバ側でdocument.querySelectorが使えます。

これで求めるものになっているでしょうか?

投稿2018/08/03 15:01

takahashim

総合スコア1877

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問