0

jquery クリック イベントの後で、オンラインでホストされている .js ファイルを読み込もうとしています。まず、私はこれを正しく行っていますか?すべての JavaScript は、リンクがクリックされた後にのみ適用されますか?

$(document).ready(function() {
            var clickHandler ="file.js";
    $('a').click(function() {
        $.getScript(clickHandler, function(data, textStatus, jqxhr) {
        console.log(data);
        console.log(textStatus);
        console.log(jqxhr.status);
    });
});

編集: コンソールを確認したところ、ファイルが読み込まれていますが、403 Forbidden メッセージが表示されます。なぜこうなった?参照するテキストをヘッダーに含める必要がありますか?

4

2 に答える 2

2

編集1:

jQueryコードを読み間違えてください - 答えのこの部分は当てはまりません:

Javascript ファイルを既存の文書に追加する方法はいくつかありますが、あなたがしようとしているほど簡単ではありません。

この議論はそれを説明することができます:ページの読み込み後に jQuery を介して <script> タグを動的に挿入する方法は?

もう 1 つの解決策は、Javascript の内容を独自の関数に入れ、それを通常どおりページに含めてから、その関数をclickハンドラーで実行することです。

編集:拡張された回答

file.js次のようなかなり単純なコードがあるとしましょう。

var el = document.getElementById("fooz");
if (el) {
  el.className += " example";
}

このコードは、関数にラップされていないため、ロードされるとすぐに実行 (または実行を試みます) されます。ロードされるたびに 1 回だけ実行されます。

ただし、関数でラップすると、次のようになります。

function colorFooz() {
  var el = document.getElementById("fooz");
  if (el) {
    el.className += " example";
  }
}

その後、関数が呼び出されるまでコードは実行されません。ロードされ、後で呼び出される準備が整います。

エラー 403

最初にすべきことは、なぜerror 403.

この段階では、JavascriptjQueryまたはとは関係ありませんAJAX。URL に次のように入力して、その Javascript ファイルをブラウザに直接ロードしようとするだけで問題が解決します。

http://example.com/file.js

もちろん、URLをWebサイトとパスに変更します。この時点では、まだエラーが発生しているはず403ですが、サーバー ログをチェックして、そこに書き込まれているエラーを確認できます。

ここで 403 エラーを追跡するためのガイドを提供するページを見つけました: http://www.checkupdown.com/status/E403.html

((PS: 403 エラーが発生する理由をランダムに推測する必要がある場合は、パス ファイルがfile.js正しくないと思います。構造とさまざまなインクルードによっては、相対パスを計算している可能性があります。パスが間違っています。))

于 2012-11-12T03:39:26.193 に答える
0

click()に渡す関数はコールバックであり、要素がクリックされたときにのみ実行されます。そうです、あなたはその部分を正しく持っています。

于 2012-11-12T03:38:08.890 に答える