Opera の attachEvent は addEventListener のエイリアスだと思う
think49 think49
Opera の attachEvent は addEventListener のエイリアスっぽいなあ。実行順が保証される上に { handleEvent: ... } まで通る。#JavaScript
think49 think49
event.target === event.srcElement, event.currentTarget === this が両方とも true になる。
think49 think49
event.preventDefault があり、'returnValue' in event === false
think49 think49
event.stopPropagation があり、'cancelBubble' in event === true
var でDontDelete属性が付与されるのは ES3 まで
think49 think49
think49 think49
@think49 そもそも、VariableStatement はDontDelete属性を付与するから delete できないはず…と思ったが、それは #ES3 までの仕様らしい。http://goo.gl/AjPB2 https://ideone.com/L5Djo
think49 think49
compatible-event.js 制作記録
think49 think49
イベントリスナについて教えてください - Yahoo!知恵袋
http://goo.gl/0s5bu /
attachEvent で実行順を保証したいらしいが、これは難問。handleEvent をキャッシュする必要があると思う…。 #JScript
http://goo.gl/0s5bu /
attachEvent で実行順を保証したいらしいが、これは難問。handleEvent をキャッシュする必要があると思う…。 #JScript
think49 think49
@think49 まだ作成中だけど gist にポストした。attachEvent の実行順は保証されてなくて循環参照対策は実装済み。
https://gist.github.com/882821 #JavaScript #JScript #DOM
https://gist.github.com/882821 #JavaScript #JScript #DOM
think49 think49
think49 think49
textareaSelectEndPoint.js http://goo.gl/tVoXM が Firefox, Google Chrome で動かないと報告を頂いたけど、どのよう修正すればいいのかわからないでいる…。#HTML5 #JavaScript
think49 think49
@think49 arguments[0] の不具合修正及び、{handleEvent: fn} に対応。コメント欄に解説を加えた。
https://gist.github.com/882821 #DOM #JavaScript #JScript
https://gist.github.com/882821 #DOM #JavaScript #JScript
think49 think49
ただし、event.srcElement === null になる不具合への対策(event.target への適切なノード初期化)はまだ甘い。
think49 think49
window-load ,window-unload, document-DOMContentLoaded 時に event.target === document にする実装にしたが、まだ対応すべきイベントタイプがあると思われる。
"use strict"; はグローバルコードに書いても良い
JSLint ではグローバルコードに 'use strict';
を書くとエラーになるが、ECMAScript 5 違反ではないらしい。(おそらく、Crockford氏の独自の思想によるエラーだと思う)
think49 think49
"- Global code is strict global code if it begins with a Directive Prologue that contains a Use Strict ..."
http://goo.gl/qaNNL #ES5
http://goo.gl/qaNNL #ES5
think49 think49
@think49 グローバルコードで 'use strict'; して問題ないことを確認した。勿論、"use strict"; でも良い。
http://es5.github.com/#x14.1 #ES5
http://es5.github.com/#x14.1 #ES5
XML宣言 (XMLDecl) は処理命令 (PI) ではない
XML宣言が PROCESSING_INSTRUCTION_NODE だと思っていて、以下のXHTML文書を書いていました。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <!-- /** * サーバは次のHTTPヘッダを出力しています。 * Content-Type: application/xhtml+xml; charset=UTF-8 */ --> <title>XHTML5</title> </head> <body> <script type="application/javascript"><![CDATA[ console.log(document.firstChild.nodeType === Node.DOCUMENT_TYPE_NODE); // true console.log(document.evaluate('child::processing-instruction()', document, null, 7, null).snapshotLength); // 0 console.log(document.createProcessingInstruction('xml', 'version="1.0" encoding="UTF-8"').nodeType === Node.PROCESSING_INSTRUCTION_NODE); // true ]]></script> </body> </html>
しかし、XML宣言は PROCESSING_INSTRUCTION_NODE ではないので document からノードとして認識されません。
XML宣言の情報は Interface Document (DOM L3 Core) のプロパティとして定義されています。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <title>XHTML5</title> </head> <body> <script type="application/javascript"><![CDATA[ console.log(document.xmlVersion); // "1.0" console.log(document.xmlEncoding); // "UTF-8" console.log(document.xmlStandalone); // true ]]></script> </body> </html>
think49 think49
いい方法が見つからないなあ。/ JavaScriptでのXML解析について質問です。 JavaScriptでXMLファイルを読み込んで... - Yahoo!知恵袋 http://goo.gl/WLTcf #XML #DOM #JavaScript
think49 think49
XPath で PROCESSING_INSTRUCTION_NODE を得られると思ったら snapshotLength が 0 になってしまった。XPath式が間違ってるのかな。
http://goo.gl/zi5w9
http://goo.gl/zi5w9
think49 think49
document.firstChild が PROCESSING_INSTRUCTION_NODE ではなく、DOCUMENT_TYPE_NODE になる。
nanto_vi TOYAMA Nao
think49 think49
@nanto_vi ありがとうございます。2.6 Processing Instructions http://goo.gl/FG5SG も合わせて読んで理解できました。
String(value) と value += ''; の違い
条件付きコメントと条件付きコンパイルの違い
think49 think49
@think49 https://gist.github.com/527683 こんな感じだったはず。
あのブログ記事はどこだったかなー。jQuery を解読した海外のブログを翻訳したまとめだった気がする。
あのブログ記事はどこだったかなー。jQuery を解読した海外のブログを翻訳したまとめだった気がする。
edvakf edvakf
azu_re azu
@think49 これの5番目くらいのやつ http://jser.info/post/2840863615
think49 think49
MSIE で実装別に処理を分ける方法に「条件付きコメント」と「条件付きコンパイル」があるけど、この2つは別物なんだなあ。
前者を "UA Detection" とするなら、後者は "ScriptEngine Detection" というべきか。#JavaScript
前者を "UA Detection" とするなら、後者は "ScriptEngine Detection" というべきか。#JavaScript
think49 think49
@think49 IE6 (WindowsXP SP2) は @_jscript_version === 5.6 だが、IE6 (WindowsXP SP3) は @_jscript_version === 5.7
http://goo.gl/zpogI #JScript
http://goo.gl/zpogI #JScript
think49 think49
@think49 「JScriptエンジンのバージョンに依存する問題」なのか、「IEのバージョンに依存する問題」なのか判断するためには IE6 (Windows XP SP2) と IE6 (Windows XP SP3) の両方を検証する必要があるが、どう考えても手間がかかる。
think49 think49
(2012/04/15 13:21追記)
条件付きコメントは IE10 から廃止される予定です。