サクラエディタでDocument、Windowオブジェクトを使う

別にサクラエディタでなくWSHでもいいんだけど、こんな感じにjs形式のマクロで書くとdocument、windowのオブジェクトが使える。

var document = new ActiveXObject('htmlfile');
var window = document.parentWindow;

document.write(source);
document.close();

document.body.innerHTML;
document.title;
などなど

documentは知っていたけれど、document.parentWindowがwindowオブジェクトに相当するとは気が付かなかった。


Alert、Confirmなども

window.alert('test');
window.confirm('test');

とwindowオブジェクトを付けることで使えるが、何故かPromptは使えなかった。


setTimeout、setIntervalも使える。
WSHはWScript.Sleepが使えるので無用だが、サクラエディタのマクロでは使えないのでこれは使えそう。
しかし、WScript.Sleepと違って指定した時間を待たずにとっとと先を実行してしまうので、setTimeoutなどが実行される前にスクリプトが終了してしまうと無視される。

window.setTimeout(function() {window.alert('test')}, 1000);

new ActiveXObject('wscript.shell').popup('ok', 0);

↑の場合、WScript.Shellのpopup(window.alertではだめだった)を表示させてスクリプトを終了させないようにしてsetTimeoutを実行させた。

追記

htmlfileのオブジェクトで普通にWSHで実行すると、クリップボードの読み込みはできるが書き込みができなかったのだが、サクラエディタのマクロで実行すると、自分の環境では書き込みもできた。

var document = new ActiveXObject('htmlfile');
var window = document.parentWindow;

//クリップボードに書き込む
window.clipboardData.setData('text', '蒸し蒸しする');


//クリップボードを読み込む
var cbstr = window.clipboardData.getData('text');

window.alert(cbstr);



document = null;

これも結構使えそう。