0

私はこのフォルダ構造を持っています:

index.php

js/scripts.js

で、index.phpと呼ばれるJavaScript関数が定義されていexecute()ます。

今、index.php私は提出されたときに電話をかけemail.php、実行の終わりにemail.php私がこれを行うフォームを持っています:

echo '<script type="text/javascript">parent.execute();</script>';

これはすべて正常に機能します。

に移動execute()してscripts.js、このコード行を次のように配置すると、次のようになりindex.phpます。

<script type="text/javascript" src="js/script.js"></script>

その後email.php、どういうわけかexecute()機能を見つけることができません。実行関数を変更すると、元のバージョン(index.phpにあったバージョン)のみが実行されるため、これを知っています。

私はこれが奇妙であることを知っていますが、私はこれに不慣れであり、とにかくこれをデバッグできるかどうかわかりません。私が行方不明になっていることは明らかですか?

4

1 に答える 1

0

<script>まず、タグにタイプミスがないことを確認してください。外部スクリプトファイルをscript.jsとscripts.jsの両方として参照しました。1つの小さな「s」ですべての違いを生むことができます。

スクリプトが正しく含まれていると仮定すると、おそらく、execute別の関数内に配置されているため、グローバルスコープから除外されています。これは、script.jsが次のようになっている場合に当てはまります。

(function () {
    ...
    function execute () {
        ...
    }
})();

その場合は、execute含まれている関数から移動してください。明示的に:executeのプロパティにすることで、グローバルスコープに入れることもできます。window

window.execute = function execute () {
    ...
};

このようにすると、execute別の関数内に残しておいても問題ありません。

于 2013-02-13T03:41:21.253 に答える