
そのはてなダイアリーで、こうすれば比較的安全に実行可能なJavaScriptを記述できるのではないかという提案。
404 Blog Not Found:javascript - はてダでは書けないはてなブックマーク技25個こういう技の紹介って、JSがあればもっとわかりやすいんだけどはてダはJS禁なので。
レシピ
- まずは、スーパーpre記法を以下のように拡張。
>|javascript| alert(Math.atan2(1,1)*4); |executable|<
このexecutableはrunnableでもevaluableでも構わない。
- これを、以下のようなHTMLに展開。
<!-- ここまでは今までと同様 --> <pre class="syntax-highlight"><span class="synStatement">alert</span>(Math.atan2(1,1)*4) </pre> <!-- ここから新規 --> <textarea style="display:none"> (function(){ alert(Math.atan2(1,1)*4); })() </textarea><input type="submit" value="実行" onclick="try{eval(this.previousSibling.value)}catch(e){alert(e)}"> </div>
- 以下のように表示される。もちろん実行可能。
alert(Math.atan2(1,1)*4);
ポイント
- 記法中のjavascriptを、
(function(){/* ... */})()
でくるむことで、変数衝突を回避 - <textarea style="display:none">に、実行用のscriptをas isで格納しておける
- その直後にinputタグをおき、onclickで
eval(this.previousSibling.value)
することで、投稿されたScriptを実行。この部分は、factor outしてももちろん構わない。
はてダにはid:amachangをはじめ、日本を代表するJavaScriptersがいるのに、現状はなんとも勿体ない。<script>
モロタグを禁止するのは仕方ないにしても、上記の方法で実行可能なSnippetsぐらい投稿可能にしてもいいのではないだろうか。
Dan the Occasional Hatena::Bookmarker
このブログにコメントするにはログインが必要です。
さんログアウト
この記事には許可ユーザしかコメントができません。