0

http://jsfiddle.net/dS4r3/24/?q=hsbc

このコードが行うことは、ページのリファラーを取得し、そこに表示されるキーワードの 1 つが含まれている場合は、特定の div のコンテンツで埋められます (それも表示されます)。

ご覧のとおり、そこをクリックすると正常に動作し、div が表示され、キーワード「hsbc」を含むコンテンツで満たされます。つまり、関数が実行されています。

問題は、ここでまったく同じコードを実装したときに、関数が実行されないように見えることです

これまでに試してうまくいかなかったもの:

  • jqueryを更新する
  • このスクリプトと競合しないようにするために、他のすべてのスクリプトを削除してください。

2 番目のリンクで機能しないのはなぜですか?

4

3 に答える 3

1

ページのリファラーは、リンクを開始したページです。この場合、stackoverflow から上記の jsfiddle リンクをクリックすると、jsfiddle のリファラーは次のようになります。http://stackoverflow.com/questions/9695194/whats-wrong-with-this-js-code-implemented-in-this-context

jsfiddle はフレーム内で実行されるため、サブフレームのリファラーを親として取得します。これが、サンプル テストが jsfiddle 内で機能する理由です。または top.document.referrer または parent.document.referrer を使用して、スタックオーバーフローの URL を jsfiddle ページに参​​照したものとして取得する必要があると思います (js クロスサイトのセキュリティ制限に違反しない場合)。

現在のページの URL を知りたい場合 (2 番目のリンクのコンテキスト内など) http://segurosendirecto.com.ar/cotizador-de-seguros-auto/?kw=hsbc、document.referrer の代わりに document.location.href を使用して取得します。次に、URL の末尾に hsbc があります。document.location.href は、実際のサイトで hsbc パラメータを取得したいものかもしれません。

于 2012-03-14T03:14:44.627 に答える
1

jsfiddle はリファラーを正常に処理しないため、この場合 jsfiddle から学んだことは Web サイトに転送されません。あなたのウェブサイトはリファラーを正常に処理しており、リファラー ( http://stackoverflow.com/questions/9695194/whats-wrong-with-this-js-code-implemented-in-this-context) には文字列 が含まれていませんhsbc

あなたがする必要があるのは、new-pageあなたのウェブサイトに へのリンクを持つ新しいページ (例えば ) を作成しcotizador-de-seguros-auto、アクセスnew-page/?kw=hsbcして新しいリンクをクリックすることです。その後、あなたの問題は消えます。

于 2012-03-14T03:09:00.907 に答える
0

コードが正しく実行されていません。すべてのコードを次のようにラップします。

$(function(){

});

次に、ブロック全体<script></script>を先頭に移動します。

より好ましい方法は、 head タグにある既存のドキュメント対応ステートメントにそのコードを追加することです。

$(document).ready(function () {

詳しくはこちらをご覧ください。

于 2012-03-14T03:32:39.137 に答える