//このスクリプトだけでは動作しないです。他、レジストリへの登録も必要。
<title>ExpContext</title>
<script type="text/JScript">
var ext;
function Coerce() {
if (!catchComplete())
return;
var s = "";
var html, i;
s +=
"<style type='text/css'>\n"+
"* { font-family:'" + unescape("%uFF2D%uFF33%20%u30B4%u30B7%u30C3%u30AF") + "', monospace !important;}\n"+
"BODY { background:#fff; color:#000;}\n"+
"BODY, TD, TH, DIV, P, BLOCKQUOTE { line-height:170%;}\n"+
"TABLE { border:1px solid #888;}\n"+
"TD, TH { padding:5px; border:1px solid #888; background:#f5f5f5;}"+
"PRE, TT, SMALL { font-size:100%;}\n"+
"SPAN.noscriptDecoration { background:#cfc; color:#080;}\n"+
"A:link { color:#00f; text-decoration:underline;}\n"+
"A:visited { color:#808; text-decoration:underline;}\n"+
"A:active, A:hover { color:#f00; text-decoration:underline;}\n"+
"<\/style>\n";
s += "<base href='" + ext.location.href + "'>\n";
s += "<body>\n";
var frm = ext.top.frames;
var frmDoc = ext.top.document;
if (frm.length) {
var msg = {
"このページにはフレームが使われています。":
"%u3053%u306E%u30DA%u30FC%u30B8%u306B%u306F%u30D5%u30EC%u30FC%u30E0%u304C%u4F7F%u308F%u308C%u3066%u3044%u307E%u3059%u3002",
"(<iframe>が含まれています)":
"%uFF08%26lt%3Biframe%26gt%3B%u304C%u542B%u307E%u308C%u3066%u3044%u307E%u3059%uFF09",
"(フレーム名:":
"%28%u30D5%u30EC%u30FC%u30E0%u540D%uFF1A",
"なし":
"%u306A%u3057",
"<noframes>の内容":
"%26lt%3Bnoframes%26gt%3B%u306E%u5185%u5BB9"
}
for (i in msg)
msg[i] = unescape(msg[i]);
s += "<div>";
s += "<strong style='color:red'>" + msg["このページにはフレームが使われています。"];
if (frmDoc.getElementsByTagName("iframe").length)
s += msg["(<iframe>が含まれています)"];
s += "</strong><br>\n";
for (i = 0; i < frm.length; i++)
s += "<a href='" + frm[i].location.href + "'>" + frm[i].location.href + msg["(フレーム名:"] + (frm[i].name ? frm[i].name : msg["なし"]) + ")</a><br>\n";
html = frmDoc.body.innerHTML;
if (frmDoc.getElementsByTagName("noframes").length) {
s += "<p><strong style='color:red'>" + msg["<noframes>の内容"] + "</strong></p>\n";
s += html.replace(/<noframes/gi, "<Xnoframes");
}
s += "<hr style='margin-bottom:5em;'>\n";
s += "</div>\n";
}
var regObj, rep = new Array(
" style=",
" bgcolor=",
" background=",
" onmouseout=",
" onmouseover=",
" onmousedown=",
" onmouseup=",
" onclick=",
" onkeypress=",
" onchange=",
" onselect=",
" onload=",
" onunload=",
" onabort=",
" onerror=",
" onfocus=",
" onblur=",
" onsubmit=",
" onreset=",
"<font",
"<nobr"
);
html = ext.document.body.innerHTML;
for (i = 0; i < rep.length; i++) {
regObj = new RegExp(rep[i], "gi");
html = html.replace(regObj, rep[i].charAt(0) + "X" + rep[i].substring(1, rep[i].length));
}
html = html.replace(/<script/gi, "<\!--<Xscript");
html = html.replace(/\/\/.?--\>/gi, "//");
html = html.replace(/<\/script>/gi, "<\/script>-->");
html = html.replace(/<noscript/gi, "<span class='noscriptDecoration'><Xnoscript");
html = html.replace(/<\/noscript>/gi, "</noscript></span>");
s += html;
s += "<\/body>";
try {
var win = ext.open();
with (win.document) {
open(); write(s); close(); title = ext.top.document.title;
}
win.focus();
window.close();
} catch(e) {
errorMsg(e);
}
}
var someWinObj;
function SomeWin() {
if (someWinObj) {
if (ext.top.frames.length) {
var frm = someWinObj.top.document.getElementsByTagName("frame");
for (i = 0; i < frm.length; i++) {
frm[i].src = ext.top.frames[i].location.href;
}
}
someWinObj.focus();
window.close();
} else if (catchComplete()) {
try {
someWinObj = ext.window.open(ext.top.location.href);
setTimeout("SomeWin()", 500);
} catch(e) {
errMsg(e);
}
}
}
function Explorer() {
var appObj = new ActiveXObject("Shell.Application");
appObj.ShellExecute("C:\\Windows\\explorer.exe","D:\\Desktop\\siteCTS");
window.close();
}
function catchComplete() {
return ext;
}
function errorMsg(e) {
alert("予期せぬ、あるいは不可抗力のエラーが発生しました。\n安全のためスクリプトの実行を中断します。\n\nError Name: " + e.name + "\nError Message: " + e.message + "\nError Number: " + e.number);
window.close();
}
//////
function srcWri() {
var s;
if (window.opener) {
s =
"<input type='button' onclick='Coerce()' value='Coerce'><br>"+
"<input type='button' onclick='SomeWin()' value='ウィンドウを複製'><br>"+
"<input type='button' onclick='Explorer()' value='エクスプローラ'><br>";
} else {
s = "<p>このファイルはIEのコンテキストメニュー拡張用のプログラムファイルです。<br>直接開くことはできません。</p>";
}
document.write(s);
}
srcWri();
</script>