ソース
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<title>com</title> | |
<style type="text/css"> | |
.max{width:100%;height:100%;} | |
</style> | |
<body> | |
<table class=max> | |
<tr><td><textarea id=ta0 wrap=off class=max></textarea></td></tr> | |
<tr><td><textarea id=ta1 wrap=off class=max></textarea></td></tr> | |
<tr><td><textarea id=ta2 wrap=off class=max></textarea></td></tr> | |
</table> | |
</body> | |
<script> | |
resizeTo(500,500) | |
fun = function(){/* | |
<div> | |
複数行の | |
文字列を | |
書きたい | |
</div> | |
*/} | |
ta0.value = fun | |
インデント調整=function(){ | |
var reg=/(\n[ \t]+)[^ \t]*$/, g='g', n='\n' | |
return function(str){ str+=''; return str.match(reg) ? str.replace(new RegExp(RegExp.$1,g), n) : str } | |
}() | |
ta1.value = インデント調整(fun) | |
com=function(){ | |
var reg0=/\/\*([^\v]*[^\r\n \t])[\r\n \t]*\*\//, reg1=/^[\r\n]*/g, L0='' | |
return function(fun){ return インデント調整((fun+'').match(reg0)[1]).replace(reg1,L0) } | |
}() | |
ta2.value = com(fun) | |
</script> | |
</html> |
実行画面

改行をエスケープする、という方法もあり、そちらも見た目がわりとシンプルな感じで好きですが、全ての行末に「\」を入れるのは面倒、かも…?
str = 'あああ\
あいうえお\
いいい'
confirm(str.replace(new RegExp(String.fromCharCode(9),'g'), '\n'))
HTAでHTML5の機能を利用する時のように、モードを変更すればスクリプトエンジンも動作モードが変わるらしいです。
私は新しいモードに適用されるデザインルールに対応できていないので、それさえクリアできれば移行したいんですが…従来のデザインルールで実現できるインターフェースを再現しようと努力するより、新しいデザインルールで実現できるインターフェースを基準にプログラムを設計できるようになる方がラクな気がしますが、いざ試してみるとどうしても従来の手法が使いたくなってしまいます。。
エスケープによる複数行文字列の扱いについてはgoogleのガイドラインでは禁止されている(いた?)らしいですがECMAScript5で標準化されたらしく、最終的には使用しても良い状況?
返信削除http://qiita.com/koshihikari/items/f6a90d8a19bda831d879