ということができるatomプラグインを作った https://github.com/mizchi/webview-pane
なにができるかはこれをみてほしい。
apm install webview-pane
WebView Pane: Open
コマンドが入る
なにができるか
- ローカルのhtmlを開ける
- 任意のURLが開ける
- 内側で開いたwebviewに対して独立したdevtoolsを開く
これでrailsアプリの開発中にlocalhost:3000開きっぱなしみたいなことができる。
どうやったのか
atomのベース部分のatom-shellのchrome拡張由来の機能として、webviewというカスタムタグが実装されている。これはiframeの強化版みたいなもので、別プロセスでタブを開けるという機能。このプラグインはatomのペーン単位としてこれを開いてるだけ。しかもdevtoolsを開けてすごく嬉しい。
バグ
webviewタグがdisplay:none
で非表示になるとGCがクラッシュするというバグがある。これは結構致命的で、タブを背面に回すと壊れることを意味する。(なので現在画面を分割して開いている)
https://github.com/atom/atom-shell/issues/989 でIssueたてたらchrome40が出たら直すよという話だった。
これが治るまでは結構不便かもしれない。とはいえ自分の用途では問題なく使えたのでリリースした。
雑感: webviewタグの信頼感
atom-shell/web-view-tag.md at master · atom/atom-shellに書かれていることは全部できる…と思いきやそう上手くいかない。
↑のバグの他に、ちょくちょく壊れてるっぽい挙動を目にするんだが自分としても安定するの待ってる感じ。
たとえば<webview/>reload()
が動かなかったので webview.executeJavaScript('localtion.reload()')
で代替している