2012-03-24 12 views
1

私はJavaから来て、今はJavascriptを習得しようとしています。それで、私が書いた行動を理解するのに問題があります。Javascript:新しく開いたウィンドウの機能が見つかりません

私は2つのウィンドウを持っています。 caller.htmlはcalled.htmlを開き、printMe()という関数を呼び出します。

これはcaller.htmlのための私のコードです:

<html> 
<head> 
    <title> PDSA #4.1 : Page 1 - Communication between Windows </title> 
</head> 
<body> 
    <script> 
     fenster = open("called.html"); 
     fenster.printMe(); 
    </script> 
</body> 

、これはcalled.htmlです:called.htmlが開かれたときに何も起こらない

<html> 
<head> 
    <title> PDSA #4.1 : Page 2 - Communication between Windows </title> 
    <script> 
     function printMe() { 
      ausgabe = document.getElementById("toChange"); 
      ausgabe.innerHTML += "Changed!"; 
     } 
    </script> 
</head> 
<body> 
    <div id="toChange"></div> 
</body> 

ChromeのThe Javascript Consoleから、次のエラーが表示されます。

Uncaught TypeError: Object [object DOMWindow] has no method 'printMe' 
(anonymous function) 

私はそれほど新しくない - なぜprintMeが見つからないのですか?関数はそこにあり、私はコードでそれを見る。あなたはエラーに私を指摘できますか?任意のヒントを事前に

おかげ アンドレ

答えて

1

あなたはjqueryの使用している場合、内部にそれを行う、この本は、仕事とあなたの人生を容易にするでしょう。..

// on the second page 
$(document).ready(function() { 
    printMe(); 
}); 

または多分:

// on the first page 
fenster = open("called.html"); 
$(fenster.document).ready(function(){ 
    fenster.printMe(); 
}); 

機能していない場合は、関数を呼び出す前にsetTimeoutを呼び出して、子ウィンドウの読み込みを完了させることができます。

// on the first page 
fenster = open("called.html"); 
setTimeout(function(){ 
    fenster.printMe(); 
},2000); // 2 seconds before invoking (increase if not enough) 
+0

ヒントをお寄せいただきありがとうございます。しかし、私はまだ私のコードの問題が何であるかは分かりません。構文の観点から、それはうまくいくはずです。そうではありませんか? – AndreKuntze

+0

ああ、私のフィードバックを削除できますか?私は間違ったボタンを押した!犯行はありません。申し訳ありません... – AndreKuntze

+0

ありがとうございます - タイムアウトはトリックでした。したがって、親ウィンドウがそれを呼び出すと、子ウィンドウはロードされませんでした。私は答えとしてあなたの応答をマークしました。しかし、私は間違って前に投票したと思う - 落札を削除するチャンスがある?私はスタックオーバーフローの新しいです! – AndreKuntze

関連する問題