重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

IE7のインラインフレームでキーイベントを取得しようとしているのですが、オブジェクトがありませんとエラーになってしまいます。

こちら通常の場合は上手くいくのですが、
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=shift_jis">
<title>HTML Editor</title>
<script type="text/javascript">
document.onkeydown = function(e) {
var shift, ctrl;
keycode = event.keyCode;
ctrl = event.ctrlKey;
shift = event.shiftKey;
// キーコードの文字を取得
keychar = String.fromCharCode(keycode).toUpperCase();
// Ctrl同時押しの場合
if (ctrl) {
if (keychar == "C") {
alert('Ctrl+C');
}
}
}
</script>
</head>
<body id="oBody">
<span id="editSpan">
<iframe id="oIframe" style="width:100%;height:50%">
</iframe>
</span>
</body>
</html>

次のようにインラインフレームの中で行おうとするとエラーになってしまいます。

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=shift_jis">
<title>HTML Editor</title>
</head>
<body id="oBody">
<span id="editSpan">
<iframe id="oIframe" style="width:100%;height:50%">
</iframe>
</span>
<script type="text/javascript">
oIframe.document.onkeydown = function(e) {
var shift, ctrl;
keycode = event.keyCode;
ctrl = event.ctrlKey;
shift = event.shiftKey;
// キーコードの文字を取得
keychar = String.fromCharCode(keycode).toUpperCase();
// Ctrl同時押しの場合
if (ctrl) {
if (keychar == "C") {
alert('Ctrl+C');
}
}
}
</script>
</body>
</html>

なにか解決方法ありますでしょうか。
よろしくお願いします。

A 回答 (1件)

event.keyCode ってIE用じゃなかったかな?



それはおいといて…
event~だと親フレームの(発生していない)イベントが呼び出されるので、エラーになっているのでは?
とりあえず、oIframe.eventみたいにしてあげれば、IE6では動作するみたいだけど…

(とりあえずのヒントとして。ちゃんとした解決は他の方の回答に譲ります)
    • good
    • 0
この回答へのお礼

ありがとうございました。
解決できました。

お礼日時:2009/06/09 21:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!