![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
javascript で ヒアドキュメント的なコードを書いてみました。
私が現在使用している IE8 及び Chrome では正常に動作しているようですが、
他のブラウザでも正常に動作するか、時間のある方お知らせください。
コードサンプルは以下のとおり。subHereDoc()関数コメント内の文字列が抜き出されて
ダイアログ表示されればOKと判断してよいと思っています。
#### コードここから ####
/* javascript free code from iph4.net by tasa */
// HereDoc 文字列設定関数
function subHereDoc()
{
/*
<pre>
あいうえお
かきくけこ
さしすせそ
</pre>
*/
}
// HereDoc 文字列取得関数
function subGetHereDoc( xFuncNameOfHereDoc )
{
if( ! window[xFuncNameOfHereDoc] )return "";
var zStr = ""+window[xFuncNameOfHereDoc];
return zStr.substr(0,zStr.indexOf("*/")).substr(zStr.IndexOf("/*")+2);
}
alert(subGetHereDoc("subHereDoc"));
#### コードここまで ####
ここのところ GoogleMapApi連携のJavascriptプログラムを作成していますが、
コードがごちゃごちゃしてきたためにヒアドキュメントを使おうと思い立ちました。
""+window["関数名"]で関数定義自体の文字列が取得できるというのがミソですが、
上記のコードが使えないブラウザがあれば今後の課題としたいと思います。
特に問題が無いと判ればがんがん使いたいと思います。
スクリプトタグ及び /*~*/ コメントタグ以外はそのまま使えると思います。
あと、よろしければ以下のページのアクセスアップにご協力を。
近日中にGoogleMapのルート検索を利用したお絵かきソフト(?)をアップしてみたいと思っています。
J-GoogleMap Top ページ
http://iph4.net/gmap
J-GoogleMap フリーマーカー設定の説明 ページ
http://iph4.net/gmap/iph_help.htm
よろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
window[xFuncNameOfHereDoc].toSource()
ではどうでしょうか?
----------
やったことはないですが。
<object id="the_data"
data="あいうえお
かきくけこ
さしすせそ"></object>
<script>
alert(document.getElementById('the_data').getAttribute('data'));
</script>
----------
下の方法はすべてのブラウザが対応していない(innerText/textContent/innerHTML/nodeValueなどで取得できない)かもしれません。
<head>
<object id="some-id" type="application/x-datamap">
あいうえお
かきくけこ
さしすせそ
</object>
</head>
昔、W3Cのサイトかどこかで見たのですが、
<head>の中に<object>を記述すると描画されませんので、スクリプトで使用するデータをそのまま記述できます。
本来は『代替コンテンツ』ですが、描画されない事を利用しています。
外部ファイルにできないので、データファイルが大きければHTMLファイルそのものが肥大化してしまいますし、
<script>でベタに書くか、
Ajaxで取得する方がいいと思います。
No.1
- 回答日時:
FireFoxではコメントを無視(捨てる)ようで空になります。
この手段は昔見たことがありますがブラウザ限定の話ですね。
この回答への補足
FireFoxではコメントどころか、ソース内記述全部でませんね。
セキュリティ関係かはたまた手抜きかそれ以外かどうなんでしょう?
とりあえず、「汚いコード」ではありますけど、
FireFox版でも可能らしい方法見つけてきました。
<script type="text/javascript" id=scr1>
// HereDoc 文字列設定関数
function subHereDoc()
{
/*
<pre>
あいうえお
かきくけこ
さしすせそ
</pre>
*/
}
// HereDoc 文字列取得関数
function subGetHereDoc( xFuncNameOfHereDoc )
{
var zStr = document.getElementById("scr1").innerHTML;
zStr = zStr.substr("function "+xFuncNameOfHereDoc);
zStr = zStr.substr(zStr.indexOf("/*")+2);
zStr = zStr.substr(0,zStr.indexOf("*/"));
return zStr;
}
alert(subGetHereDoc("subHereDoc"));
</script>
他の回答者さんも書かれていますが、このコードでも scriptタグの ID属性を見に行っているので
外部スクリプト化でもそのまま使えそうですね。
枝分かれしちゃいますが、こちらのコードでも検証お願いします。
(時間があるときに、ですけど)
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScriptからVBScriptの呼び...
-
undefinedが表示されてしまう
-
<aタグで変数に文字を代入
-
datepickerで日付の値を取得したい
-
<a href="#" …>の意味を教えて...
-
SCRIPT5007: 未定義または NULL...
-
JavaScriptでiframeの内容を「...
-
ウインドウを縮小しても文字を...
-
特定のページから移動してきた...
-
window.open でExcelファイルを...
-
function の return 値を表示し...
-
音楽再生用jQueryプラグイン「j...
-
bodyにidをつける理由は何ですか?
-
Dreamweaver で 外部JSを読み込...
-
ボタンのID名を取得するには?
-
(Javascript)印刷するファイル...
-
XMLHTTPRequestでstatusが0に
-
変数の代入値を外部の.txtファ...
-
中央揃えのJavascript!
-
フォーカス移動抑止について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JavaScriptからVBScriptの呼び...
-
undefinedが表示されてしまう
-
Vbscriptで自分自身のウィンド...
-
onbeforeunload時のwindow.open...
-
ウインドウの後ろに隠れている...
-
Cygwinでログをのこす方法
-
datepickerで日付の値を取得したい
-
確認ダイアログで「キャンセル...
-
毎回、ページ読み込み時に1回...
-
引数の数によって関数の動作を...
-
javascriptでbgmを自動再生する...
-
「関数が定義されていない」と...
-
showModalDialogで開いた画面か...
-
<aタグで変数に文字を代入
-
iPhone Safariの戻るボタンの挙動
-
リンクにマウスポインタをおく...
-
window.onloadイベントの任意実...
-
location.reload() について
-
見覚えのないコードが・・・
-
VBscriptでVisualBasicのような...
おすすめ情報