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>
==================================================
補足
FireFoxではコメントどころか、ソース内記述全部でませんね。 セキュリティ関係かはたまた手抜きかそれ以外かどうなんでしょう? とりあえず、「汚いコード」ではありますけど、 FireFox版でも可能らしい方法見つけてきました。 <script type="text/javascript" id=scr1> // HereDoc 文字列設定関数 function subHereDoc() { /* <pre> あいうえお かきくけこ さしすせそ </pre> */ } // HereDoc 文字列取得関数 function subGetHereDoc( xFuncNameOfHereDoc ) { var zStr = document.getElementById("scr1").innerHTML; zStr = zStr.substr("function "+xFuncNameOfHereDoc); zStr = zStr.substr(zStr.indexOf("/*")+2); zStr = zStr.substr(0,zStr.indexOf("*/")); return zStr; } alert(subGetHereDoc("subHereDoc")); </script> 他の回答者さんも書かれていますが、このコードでも scriptタグの ID属性を見に行っているので 外部スクリプト化でもそのまま使えそうですね。 枝分かれしちゃいますが、こちらのコードでも検証お願いします。 (時間があるときに、ですけど) よろしくお願いします。