質問に目を通したところ、「ReferenceError foo is not defined」という件名に似たものはほとんどありません。ただし、コード内のエラーを検出して動作させることができません。Chrome と Safari では正常に動作しますが、IE、Opera、Firefox では動作しません:
HTML 内のコード
<a href="javascript:foo(1)" target="_parent">
ヘッダーに配置されたJavaScriptを呼び出します
<script type="text/javascript" src="http://www.site.com/include/script.js"></script>
これは次のように定義されます。
function foo(language){
url = window.parent.location.href;
parts = url.split('/');
page = parts[3];
newUrl = "";
if (language == 1){
newUrl = "http://www.site1.com/" + page;
} else if (language == 2){
newUrl = "http://www.site2.com/" + page;
} else{
newUrl = "http://www.site3.com/" + page;
}
window.parent.window.location.href = newUrl;
}
に変更するためにテストした関連する質問を読んでwindow.foo = function(language){...}
いますが、役に立ちませんでした。
簡単でシンプルに見えますが、何らかの理由で foo は IE と firefox では定義されていません。
各ページの埋め込みiframeである「top.html」にjavascriptがあることを追加する必要があります。どういうわけか chrome はこれを管理しますが、IE はそうではありません (ただし、http: //www.site1.com/top.html を参照して、redirect(language); を呼び出すボタンをクリックすると、スクリプトは機能します)。