1

質問に目を通したところ、「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); を呼び出すボタンをクリックすると、スクリプトは機能します)。

4

2 に答える 2

1

あなたの問題は、リンクがターゲットにされていることです(target="_parent"少しあります)。

これは、それが入っているウィンドウではなく、ターゲットウィンドウのスコープで実行されることを意味します。そして、そこに名前が付けられた関数はありませんfoo

于 2013-11-20T19:57:28.680 に答える