下載
軟體開發
帳戶
下載
軟體開發
登入
我忘記帳戶名和密碼了
新增帳戶
語言
手冊
語言
手冊
×
登入
登入名稱
密碼
×
我忘記帳戶名和密碼了
繁體中文翻譯狀態
類別:
軟體
人
PersonalForge
Magazine
Wiki
搜尋
OSDN
>
軟體搜索
>
Multimedia
>
Graphics
>
Editors
>
Raster-Based
>
Drop & Draw
>
Ticket List/Search
>
待辦事項 #36865
Drop & Draw
描述
專案概要
開發人員儀表板
專案的網頁
Developers
Image Gallery
List of RSS Feeds
活動
使用統計
歷史
原始碼
儲存庫列表
Subversion
查看儲存庫
待辦事項
待辦事項列表
里程碑列表
類型列表
元件列表
List of frequently used tickets/RSS
新增待辦事項
文檔
FrontPage
Title index
Recent changes
溝通
討論區列表
開發者論壇 (12)
幫助論壇 (1)
公開討論 (1)
待辦事項 #36865
待辦事項列表
新增待辦事項
RSS
Notes on JavaScript
啟用日期:
2016-12-11 08:58
最後更新:
2016-12-19 08:14
監視
ON
OFF
回報者:
takoyaki_umaaaa
負責人:
(無)
類型:
次回 改善項目
狀態:
開啟
元件:
(無)
里程碑:
(無)
優先權:
5 - 中
嚴重程度:
5 - 中
處理結果:
無
檔案:
無
細節
JavaScript で実装する上で詰まった箇所と今後の方針
【症状】Element に値をセットしても黙って無視される。問題の原因が特定できない。
【原因】
下記が問題原因である場合がほとんどだが、問題についてのフィードバックが全くないため原因特定に非常に時間がかかる。
設定文字列の最後に単位 (pxなど) がない
設定文字列に余計な文字が入っている (セミコロンが入っている、など)
Property が Read only である可能性 (CSS 定義など)
Spell miss, または 大文字/小文字の間違い
(クロージャなどで) 変数定義が使用箇所よりも後になっている
【対策】
Element 操作用 Wrapper Class を作成し、そこを通してアクセスする
Setter は単位漏れをチェックするして追加するなりエラーを吐くなり人間側が分かるようにする
Spell miss などは Unit test で検出できるようにする
【症状】true になるはずの比較結果が false になる
【原因】
文字列を値を
"=="
や
"<="
で比較している
Edge と Chrome で動作結果が変わる
【対策】
Element 操作用 Wrapper Class を作成し、Property は number か enum 保持で統一する
【症状】Mouse downでElementを最前面にする処理(removeChild/appendChild)があるとscrollbarが効かなくなる
【条件】
ツールバーが複数表示されている
ツールバーの中にはボタンが並んでおり、ツールバー内で縦横スクロール表示する
ツールバーは選択(mouse down)したものが他のツールバーよりも手前に移動する
【症状(詳細)】
ボタンを表示しようとスクロールバーをクリックした瞬間にスクロールバーが消える
クリックしたツールバーが最も手前に表示される
【原因】
スクロールバーがmouseイベントをその親にも投げるために親要素の処理が動く
スクロールバーがイベントを拾ったことがわからない(親要素が初めてイベントを拾ったような情報で入ってくる)
(推測)removeChild → appendChildしたタイミングで要素の初期化が走っているっぽい(Animationも再実施されたりする)
そのためスクロールバー表示状態も失われると推測
【回避策】
z-indexを使う(情報が初期化されなければいい)
【症状】要素を回転させた状態でCSS Animationを適用したい
【問題点】
User入力での回転(rotateZ())とCSS Animation定義のrotateZ()が被る
【対策】
DIVを2枚作成して、User操作は1枚目に、Animationは2枚目に適用させる
定義を反映させる数だけDIVを重ねたいが、要素を重ねる枚数が増えるほど Microsoft Edge の動作が不安定になる
そのため今回は2枚重ねまでにする
【症状】CSS定義が反映されない
【条件】
CSSファイルの定義が一部反映されない
Styleタグ内の定義が一部反映されない
【原因】
反映されない定義付近に "//" でコメントしている箇所がないか(CSSはブロックコメントのみ)
要素を半透明にするとblock-shadowやtext-shadowが非常に見づらくなる場合がある
【症状】console.errorが出力されない。変数がundefinedのまま更新されない
【条件】
ES6のClass構文を使っている
constructor内で処理している
【原因】
はっきりは分からない
(推測)constructor()内はinstanceが作成される前の状態なので外部関数が正しくcallできないのかもしれない
この辺りの動作は実装依存なのか?それすら不明。
【回避策】
constructor()では内部変数の定義と初期化のみにする
必要な初期化処理は initialize() 関数を別途用意してnewの後に呼び出す
【症状】Pure JavaScriptのProjectから WinJSを使ったProjectにしたら画面周りの動きが変わった
かなり酷い
最初から方針が決まっているならReleaseに近い環境で開発する(当然だが)
今回のように習得しながらの場合は絶望的。
WinJSに拘らず、Cordovaなども考慮に入れて対応していくしかない
【症状】Pure JavaScript環境から WinJS環境に変更すると、一部のElementのscrollbarが効かない
見た目上は No.3 の症状と同じに見える
【回避策】
scrollbarを表示しているElementに "position: relative" を追加する
※ 対応前は未定義だった( == position: static)
【原因】
はっきりは分からない
この症状が出たときにscrollbar表示Elementの高さを、親Elementの2倍にしてみた
すると下半分だけスクロールバーが操作できる状態になった
この現象からの想像でしかないが、position:staticだとscrollbar eventを無視してもっと親のElementに通知するという実装になっているようにしか見えない
(ちょうどposition:absoluteの親にposition:staticがあっても無視するような)
【症状】Pure JavaScript環境から WinJS環境に変更すると、index.htmlのviewport指定が無視される
【原因】
はっきりは分からない。指定が無視されるとか理解できない。Edgeは独自実装を避ける路線で開発されているはずでは?
とりあえず WinJS のコントロールに Viewbox というものがあるらしい。しかし使いたくない。使いたくもないLiblaryに作法を強要されて素直には従えない。コードも共有できないものになるし。
UWP
File access 制限が不便に感じる。アプリ化しても UWP の場合は File picker での指定が必要になる。
従来通り file access するには WPF で作成する必要がある。
Ticket History (3/8 Histories)
Show older Histories
2016-12-11 08:58
Updated by:
takoyaki_umaaaa
New Ticket "Notes on JavaScript" created
2016-12-11 20:06
Updated by:
takoyaki_umaaaa
Details Updated
2016-12-18 22:30
Updated by:
takoyaki_umaaaa
Details Updated
2016-12-18 22:31
Updated by:
takoyaki_umaaaa
Details Updated
2016-12-18 22:44
Updated by:
takoyaki_umaaaa
Details Updated
2016-12-18 22:58
Updated by:
takoyaki_umaaaa
Details Updated
2016-12-18 23:07
Updated by:
takoyaki_umaaaa
Details Updated
2016-12-19 08:14
Updated by:
takoyaki_umaaaa
Details Updated
Attachment File List (
0
)
Attachment File List
No attachments
編輯
Please login to add comment to this ticket »
登入
JavaScript で実装する上で詰まった箇所と今後の方針
下記が問題原因である場合がほとんどだが、問題についてのフィードバックが全くないため原因特定に非常に時間がかかる。
Setter は単位漏れをチェックするして追加するなりエラーを吐くなり人間側が分かるようにする
Edge と Chrome で動作結果が変わる
そのためスクロールバー表示状態も失われると推測
そのため今回は2枚重ねまでにする
この辺りの動作は実装依存なのか?それすら不明。
今回のように習得しながらの場合は絶望的。
※ 対応前は未定義だった( == position: static)
すると下半分だけスクロールバーが操作できる状態になった
(ちょうどposition:absoluteの親にposition:staticがあっても無視するような)
UWP
従来通り file access するには WPF で作成する必要がある。