閲覧ありがとうございます。
自作ライブラリのIE8以下への対応に苦労しております。様々なメソッドがIE8以下には存在しませんがObject.keysなどについては自己解決しております。
今回知恵をお借りしたいのはaddEventListenerのIE8以下対応についてとなります。またそれにいくつかの条件があります。
第一にコードはFirefoxなどで動くコードから変更を加えず対応する予定です。
lang
1//参考コード(実際のコードはコンストラクタの中でObject管理しております) 2function OutputConsole(){ 3 console.log("True"); 4} 5 6document.getElementsByTagName("body")[0].addEventListener("click",OutputConsole,false);
このようなコードがIE8以下で動くようにしたいです。prototypeの拡張(汚染)なども今回は問題ありません。
(そのメソッドがないことを確認した後、代入するため)
第二にjQuery等外部ライブラリは使用しない方が好ましいです。理由として自作ライブラリが単独、または同じく自作の補助ライブラリで成立し動作することを目標としているからです。
第三に引数の使用も可能であればそれが望ましいです。
lang
1function OutputConsole (_String){ 2 console.log(_String); 3} 4//無名関数でのラップ 5document.getElementsByTagName("body")[0].addEventListener("click",function (_EventObject){OutputConsole(_EventObject.target);},false);
removeEventListenerについても同様の条件であると考えてください。
またIE6に存在するメモリリークに対応できていれば理想的です。
質問内容は以上となります。
一応の目標はIE6以上への対応です。
期待している回答としましては具体的なコード(または参考となるURL等)とその考察、思想などを示していただけるとありがたいです。また前述のとおり、prototypeの変更を含めて元から存在するObjectの拡張を行うつもりなのですがその処理についても記載していただけるとありがたいです。
具体的には以下のような部分になります。
lang
1//Object.keys 2if(!("keys" in Object)){ 3 Object.keys=function (_Object){ 4 var _Keys=[]; 5 for(var key in _Object){ 6 _Keys[_Keys.length]=key; 7 } 8 return _Keys; 9 } 10}
よろしくお願いいたします。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2014/12/25 15:44
2014/12/25 16:06
2014/12/26 04:55
2014/12/26 09:22
2014/12/26 20:30
2014/12/27 13:16