タグ

ブックマーク / shogo4405.hatenadiary.com (4)

  • innerHTMLでscriptする - Thousand Years

    innerHTMLにscriptを代入しても評価されず無視されるのはIEの仕様なのでいいとしてその回避策。最近、昔あの方法で出来たんだけどいつの間にかできなくなってるコードが出てきている気がします(気のせいにしておこう)。 以下は一般的な動かないコード。 <div id="foo"></div> <script type="text/javascript"> document.getElementById('foo').innerHTML = "<script type='text/javascript'>alert('動かない')<"+"/script>"; </script> 以下は動くコード。 <div id="foo"></div> <script type="text/javascript"> document.getElementById('foo').innerHTML =

    innerHTMLでscriptする - Thousand Years
  • insertAdjacent.js - Thousand Years

    どっかで見たことあるんですが見つからない…というわけでfxでinsertAdjacent系が利用できるものをつくりました。これ使ってdocument.writeハックするとなんか面白いことできそうです。ちなみにinsertAdjacent系はIEとOperaでは利用可能です。お持ち帰りでお願いします。 ドキュメント DOMの見慣れないメソッドHTMLElement.insertAdjacent〜 - Thousand Years ソース (function() { if('HTMLElement' in this){ if('insertAdjacentHTML' in HTMLElement.prototype){return;}; }else{ return; }; function insert(w, n) { switch(w.toUpperCase()) { case 'BEFO

    insertAdjacent.js - Thousand Years
    raimon49
    raimon49 2008/11/12
    insertAdjacent系を持たないブラウザ向けに定義する。
  • 僕が使うJavaScriptの小技集 - Thousand Years

    小技じゃないよ小枝だよというCMがあった気がしますが…僕がよく使うJavaScriptの小技集です。数は少ないです。偉大なJavaScriptハカーさんはどんな小技持ってるんだろう?気になります。この記事を偶然みてくれたJavaScriptのハカーさんも小技集公開して欲しい!なんて勝手に思ったり…。 文字列を繰り返す n個の文字(今回は#)を繰り返す場合はwhile使ってループ組むよりもこっちを利用します。 Array(n + 1).join("#"); // n -> 5 なら ###### 文字列を文字の配列にする Hello World!!を[H][e][l][l][o][ ][W][o][r][l][d][!][!]に分解するってことです。JavaScriptでよく字句解析するコードを書くので1文字1文字に分解してもらうとうれしい人です。charAtよりも高速ですし。教えていただ方

    僕が使うJavaScriptの小技集 - Thousand Years
    raimon49
    raimon49 2008/08/19
    >文字列を繰り返す Array(n + 1).join("#");
  • 文字列連結を素早くするオブジェクト - Thousand Years

    JavaScriptの文字列連結はすればするほど長くなればなるほど重くなるっていうのは有名な話でどうしても何回も連結せざるを得ない状況(テンプレート処理)では以下のような俺オブジェクトを使って対処してきました。 ただ人間欲が出てくると replace したいとか length 取得したいよ...と思い、自分で実装する必要が出ていました。ただ String.prototype が継承できるのを思い出し作り直したのが以下のもの。 function Buffer() { var k = -1, b = []; this.append = function() { for(var i=0,f=arguments.length;i<f;i++) { if(!arguments[i]){ return; }; b[++k] = arguments[i]; }; }; function toString

    文字列連結を素早くするオブジェクト - Thousand Years
  • 1