###前提・実現したいこと
body に書かれた内容を、javascript でそのまま取得したいです。
###発生している問題・エラーメッセージ
何パターンか試してみたのですが、<= が <= に変換されてしまう ケースなどがありました。
できればまったくそのままの形で取得したいのですが…
###試したこと
- jQuery を使用して $("body").html()
- document.body.innerHTML
- document.body.childNodes を回してみる
###該当のソースコード
html
1<!DOCTYPE html> 2<html> 3<head> 4<script src="https://code.jquery.com/jquery-1.9.1.js"></script> 5<script> 6 $(function() { 7 console.clear(); 8 9 //======================================== 10 // jQuery で取ってみる 11 // ⇒ <= が <= になる 12 //======================================== 13 var jq = $("body").html(); 14 15 console.log("=== jq ===================="); 16 console.log(jq); 17 18 //======================================== 19 // 標準 javascript で取ってみる 20 // ⇒ <= が <= になる 21 //======================================== 22 var js = document.body.innerHTML; 23 24 console.log("=== pure js ===================="); 25 console.log(js); 26 27 //======================================== 28 // childNodes から取ってみる 29 // ⇒ 逆に <= が <= になる 30 //======================================== 31 var str = ""; 32 for (var i = 0, imax = document.body.childNodes.length-1; i <= imax; i++) { 33 var childNode = document.body.childNodes[i]; 34 str += (childNode.nodeValue || childNode.outerHTML); 35 } 36 37 console.log("=== childNodes ===================="); 38 console.log(str); 39 }); 40</script> 41</head> 42<body> 43 小なりが変換されてしまう。そのまま取りたい。 44 タグは変換されないのに 45 46 <div>あいう</div> 47 48 <ul> 49 <li>test</li> 50 </ul> 51 52 ``` 53 if (list.length <= 0) ... 54 ``` 55 56 if (list.length <= 0) ... 57 58 <= 59 60</body> 61</html>
###補足情報(言語/FW/ツール等のバージョンなど)
- とりあえず Windows10 : IE11 と Chrome で動けば良いかなと思っています。
- jQuery のバージョン等に指定はないです。
###その他
- そもそも何でそんなことをしたいのか
⇒ 「body にマークダウンでドキュメントを記述」して、
「marked.js というライブラリで変換して再設定」としようとしたところ、
意図しない変換がかかっている部分があったという経緯です。
(marked.js はマークダウンで書いたものを HTML タグに変換してくれるライブラリ)
$("body").html() が <= を < で返しており、
marked.js は < をさらに < に変換しているようなので、
最終的にブラウザ上で 比較式が <= と表示されてしまっています。
その為、<= ではなく <= の状態で marked.js に渡せないものかと考えています。
- マークダウンは別ファイルで記述して、それを読み込む… としない理由
⇒ 一応 ローカルでも動かせると良いなあと思った為です。
別ファイルにして~の読み込み~ だとローカルで動かないので
(ブラウザの設定をいじれば動くのは知ってるんですけど…)
- *.md で書かないで marked.js を使う理由
⇒ どうしても無理なら仕方ないのですが、可能であればビューアーのインストール等をせずに、
ブラウザでぺろっと見られると良いなと思いました。
追記: この辺 ↓ とかの関係ですかね… そのまんまは取れないのでしょうか
innerHTML や jQuery.html() は HTMLをそのまま取得できるわけではない
http://jmblog.jp/archives/876
何かお分かりになる方がいらっしゃいましたら よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/21 10:01 編集