変更があったらブラウザを自動リロードするブックマークレット(2)

フックするファイルの指定をなくして、ロケーションのhtml本体と、そのhtmlにリンクしてるjsとcssがローカルにある場合フックするように修正した。

javascript: (function () {
if (location.href.indexOf("file:///")) {
    alert("not local file");
    return;
}

var func = function hook(name) {
    setInterval(function() {
	var self = arguments.callee;
	var req = new XMLHttpRequest();
	req.open("GET", name, true);
	req.onload = function() {
	    (self.old && req.responseText != self.old) && window.doc.location.reload(true);
	    self.old = req.responseText;
	};
	req.send(null)
    }, 1000);
}.toString();

function localFileSerch(r, name) {
    var tag = document.getElementsByTagName(name);
    for (var i = 0; i < tag.length; i++) {
	var n = (name == "link") ? tag[i].href : tag[i].src;
	if (!n.indexOf("file:///")) {
	    r.push('hook("' + n + '");');
	}
    }
}
    
var script = [];
script.push('<script type="text/javascript">');
script.push("(function () {");    
script.push(func);
    
localFileSerch(script, "script");
localFileSerch(script, "link");
script.push('hook("' + location.href + '");');

script.push("})();");    
script.push("</script>");
    
document.write(script.join("\n") + '<frameset><frame name="doc" src="' + location.href + '"></frame></frameset>');        
document.close();
})();    

参考

Firefox での開発を高速化する自動リロードスクリプト