var data = "data" in event_or_data? event_or_data.data: ("arg is event, tag=" + event_or_data.target.tagName);
この code が正常に実行されない case があった.
"data" in event_or_data が "true" のときは, event_or_data.data の値が data 変数に格納されるが
そうでないときの ("arg is event, tag=" + event_or_data.target.tagName); が無視されてしまう(data が undefined となる)...
しかし,
data = event_or_data.data? event_or_data.data: ("arg is event, tag=" + event_or_data.target.tagName);
とすると何事もなかったように処理が完遂する...
実際の code は,
action.perform = function performImpl(actionName, event_or_data) { var sval, data; //data = "data" in event_or_data? event_or_data.data: ("arg is event, tag=" + event_or_data.target.tagName); data = event_or_data.data? event_or_data.data: ("arg is event, tag=" + event_or_data.target.tagName); console.log(data); with(this.reference) { switch(actionName) { case "FILE": sval = doc.body.tagName; break; case "SAVE": case "SAVED": case "IMPORT": sval = actionName + ": " + data; break; } jqo.text(sval); console.log(arguments); } };
これは chrome 上で起こった現象.
IE はどうなのか? と思い, 上記の code が埋め込まれた page を IE10 で実行してみると...
同じ結果だった -:(
どうやら, 記述の問題だな... というところで今回はこれ以上問題を追及するのをやめた.