index.htm
 ├top.htm("top")
 └main.htm("main")

◆top.htm◆
<script>
function func() {
 parent.main.func2("world");
}
</script>
<form name="submit1" action="#">
<input type="button" value="テスト1" onclick="func()">
</form>

◆main.htm◆
<script>
function func2(x) {
 document.clear();
 document.write("hello ",x,"!!");
}
</script>

のような構造で、「テスト1」をクリックすると一度はちゃんと表示されるのですが、もう一度クリックするとエラーになってしまいます。
(もちろんこれだと2回以上実行する必要はありませんが、実際にはtopのフォームには入力部もついていてその内容がmainに反映される仕組みです)

どうもページが一つ進んでいるのが原因(ブラウザのバックボタンで戻ればまた動作する)らしいので、
func内でfunc2を呼び出す前にhistory.go(-1)を入れてみたのですが、そしたら今度は1回実行させるのに2回クリックしないといけない状態になりました。
どうすればきちんと動作するのでしょうか?

ttp://www.uploda.org/uporg363680.lzh.html
にhistory.go(-1)を入れた状態のコードをUPしました。受信パスは「test」です。