ポップアップ辞書など非同期型SeaHorseスクリプトの修正

SaveTextAreaから使ってた、IHTMLWindow2にホストさせて@type SleipnirScriptなSeaHorseスクリプトを非同期で動かすやり方だとexecScriptの上書きでISleipnirなり他のオブジェクトなりにアクセスできるようになる可能性*1があるので、Sleipnir2スレを参考にスクリプトコントールにホストさせるようにしてみた。
ページのスクリプトを無効にしてても動く*2とかメリットもあるんだけど、デフォルトで使えるのが2k以降なのと、タブを閉じるだけでほぼ開放できて最悪でもSleipnirの終了で間違いなく開放されるIHTMLWindow2にホストさせる場合と比べてメモリリークしやすいから敬遠してたんだけど、確実に素のwindow.execScriptにアクセスする手法は思いつかなかった。この場合、非同期化自体のプロセスでは一切IHTMLWindows2にオブジェクトを渡さないしフレームを考慮しても文字列しか渡さずに済むので、処理部分で変なことしないように注意すれば問題ないはず。
execScriptを使っていたポップアップ辞書SaveTextArea、ライブラリブリッジをそれぞれ修正したが、とりあえずは問題なく動作してるみたい。SaveTextAreaは最初意図通りに開放されずに散々悩んだが、スクリプトコントロール内で生成した要素にスクリプトコントロール内の関数をアタッチしてたせいで循環参照起こしてた。基本的にイベントをアタッチしたものだけ注意を払えば大丈夫だと思うけど、はまると何が参照保持してんのかわからなくなりそう。
SaveTextAreaはそろそろ役目を終えるスクリプトだと思うけど、テキストエリアをリサイズした時の挙動とテーブル作成クエリのミスが気になってたのでついでに修正を行った。ライブラリブリッジは知ってる範囲では他に使ってる人がいないけど、とりあえず使う側から特別意識する必要があるような変更はないと思うけど、

[todo, include, ScriptName]

の部分で第4引数にtrueを追加してやるとライブラリとtodo内で_debugがtrueになるようになったのと、sleipnirを省略可能になった。あとwindowが個々のフレームを指して_windowがトップウィンドウを指す。window.topで参照できるからあんま意味ないけど。
これらの修正とは直接関係ないけど、すーぱーどらっぐあんどどろっぷ*3でうまく動作しないことがあるということなので、ドラッグ中はドラッグ開始イベントが起こらないように変えてみた。設定とかはそのままで大丈夫なはず。

*1:例によって誰が狙うんだってセキュリティホールではあるんだけど

*2:状況が状況なので利用者からすればセキュリティホール自体の修正よりこちらの方が嬉しいか

*3:ひらがな表記を正式名称にした