みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

javascriptでのエラーについて

Windows7+IE8にて以下の処理を行いたいのですが、
==================================================
(1) 親ウィンドウ(oya_window.html)から、【window.open】にて
  子ウィンドウ(ko_window.html)を開く
(2) 子ウィンドウ(ko_window.html)の【window.opener】にて
  親ウィンドウ(oya_window.html)に定義されている
  【window.open】を実行する関数[openWindow]を呼び出し、
  Yahooページを開く
==================================================

(2)の部分で以下のエラーとなり、Yahooページを開く事ができません。
---------------------------------------------------------
このWebページのエラーにより、正しく機能しない場合があります。
---------------------------------------------------------
タグが無効です。
oya_window.html   ライン:10
コード:0      文字:5
---------------------------------------------------------

同マシン(Windows7)のfirefoxでは問題なく処理が行えるため、IEの
何らかの設定に起因していると思うのですが、IEの何の設定に起因して
いるのかわからず、困っています。

何か情報をお持ちの方いらっしゃいましたら、よろしくお願いします。

【その他情報】

○IEをアドオンなしで起動しても同エラーが発生することから、IEの
 アドオンによる影響ではないと思われます。

○以下の処理は問題なく実行できます。
 ▼パターンA
 ==================================================
 (1) 親ウィンドウ(oya_window2.html)から、【window.open】にて
   子ウィンドウ(ko_window2.html)を開く
 (2) 子ウィンドウ(ko_window2.html)にて(元々親ウィンドウ
   (oya_window.html)に定義していた)【window.open】を実行する
   関数[openWindow]を呼び出し、Yahooページを開く
 ==================================================
 ▼パターンB
 ==================================================
 (1) 親ウィンドウ(oya_window3.html)から、【window.open】にて
   子ウィンドウ(ko_window3.html)を開く
 (2) 子ウィンドウ(ko_window3.html)の【window.opener】にて
   親ウィンドウ(oya_window.html)に定義されている
   【document.bgColor】を実行する関数[changeColor]を呼び出し
   親ウィンドウの背景色を灰色に変更する
 ==================================================

【ソース】

▼本来のパターン
==親ウィンドウ(oya_window.html)===================
<HTML>
<HEAD>
<TITLE>親ウィンドウ
</TITLE>
<script language="Javascript">
function koopen(){
window.open("ko_window.html","ko_window","status=yes,width=800,height=100");
}
function openWindow(){
window.open("http://yahoo.co.jp","","");
}
</script>
</HEAD>
<BODY>
<a href="JavaScript:koopen();">子ウインドウを開く</a>
</BODY>
</HTML>
==================================================
==子ウィンドウ(ko_window.html)===================
<HTML>
<HEAD>
<TITLE>子ウィンドウ
</TITLE>
<script language="Javascript">
function helpop(){
window.opener.openWindow();
}
</script>
</HEAD>
<BODY>
<a href = "JavaScript:helpop();">Yahooページを開く</a>
</BODY>
</HTML>
==================================================

▼パターンA
==親ウィンドウ(oya_window2.html)===================
<HTML>
<HEAD>
<TITLE>親ウィンドウ
</TITLE>
<script language="Javascript">
function koopen(){
window.open("ko_window2.html","ko_window","status=yes,width=800,height=100");
}
</script>
</HEAD>
<BODY>
<a href="JavaScript:koopen();">子ウインドウを開く</a>
</BODY>
</HTML>
==================================================
==子ウィンドウ(ko_window2.html)===================
<HTML>
<HEAD>
<TITLE>子ウィンドウ
</TITLE>
<script language="Javascript">
function helpop(){
window.opener.window.open("http://yahoo.co.jp","","");
}
</script>
</HEAD>
<BODY>
<a href = "JavaScript:helpop();">Yahooページを開く</a>
</BODY>
</HTML>
==================================================

▼パターンB
==親ウィンドウ(oya_window3.html)===================
<HTML>
<HEAD>
<TITLE>親ウィンドウ
</TITLE>
<script language="Javascript">
function koopen(){
window.open("ko_window3.html","ko_window","status=yes,width=800,height=100");
}
function changeColor(){
document.bgColor="CCCCCC";
}
</script>
</HEAD>
<BODY>
<a href="JavaScript:koopen();">子ウインドウを開く</a>
</BODY>
</HTML>
==================================================
==子ウィンドウ(ko_window3.html)===================
<HTML>
<HEAD>
<TITLE>子ウィンドウ
</TITLE>
<script language="Javascript">
function helpop(){
window.opener.changeColor();
}
</script>
</HEAD>
<BODY>
<a href = "JavaScript:helpop();">親ウィンドウの色を変える</a>
</BODY>
</HTML>
==================================================

投稿日時 - 2011-05-04 19:00:02

QNo.6713913

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

すでに解決済みかもしれませんが・・・・・・。

可能であればOfficeをアンインストール、IEをアンインストール、IEを再インストールしてみてください。
OfficeのハンドラがIEと当たっているため、誤動作するそうです。

そうでなければ、Administrator権限でコマンドプロンプトを起動し
cd c:\Windows\system32
regsvr32 -u docobj.dll
cd C:\Program Files\Internet Explorer
regsvr32 ieproxy.dll
と入力してみてください。

参考URL:http://goo.gl/QzwWNV

投稿日時 - 2014-04-28 15:23:53

ANo.2

opener じゃなく、名前が有るwindowだから そういう方向で取り出す形にするっていうのはどう?(そもそもIEでopenerでobjectが返ってきてるのかっていう疑問が…)
IEの挙動として「開いたwindowからごにょごにょ」を「無効化」しているだけかもしれないし。window.open系は偽装だのなんだのであれこれと仕様が変わったりレンダリングエンジンごとに挙動が違ったりってしてるから・・・IEならセキュリティレベルで変化するかも?

投稿日時 - 2011-05-05 11:54:24

ANo.1

line10 の window.open() だけど、引数が "" なら省略したらどうなるかな?
(丁寧に常に3つ指定するんじゃなく)

投稿日時 - 2011-05-05 10:09:36

お礼

>SAYKAさん

ありがとうございます。
line10 の window.open() の引数については、""を省略しても変化ないんです。。

子ウィンドウから、【window.opener】で親ウィンドウ側に定義されている【windows.open】を実行する関数(openWindow)を実行する際にエラーになるようなのですが。。。

IEのなんの設定が起因して、なぜ「タグが無効です」となるのか全く検討もつかず困ってます(・_・;)

投稿日時 - 2011-05-05 11:14:34

あなたにオススメの質問