6

jQuery JavaScript が URL の末尾にハッシュ値を返す場合、次のスニペットを使用しています。FF では完全に動作しますが、4 行目のアラートは Chrome では空を返します。

window.location.hash.substring(1)回線が通らないようです。私も試してみましたwindow.location.hash.replace("#", "");

// Map Clicks
$("#tab2.tab_content #map").delayed('click', 500, function() {
    state = window.location.hash.substring(1);
    alert(state);
    jsonLink = 'http://ml.uscm.org/ministries.json?state=' + state + '&active=true&callback=?';
    getMapResults();
    return false;
});

Chrome で URL からハッシュ値を取得するためのトリックは何ですか?

URL は次のように作成されます。

http://www.ourdomain.com/thispage.html#IL

ここで、IL は州を表す 2 文字の略語です。「IL」を取得したい。

ここに動作するデモがあります:

http://richcoy.com/locator/index2.html

Chrome の [州で検索] タブをクリックしてから州をクリックすると、問題が表示されます。ブラウザーは、行きたい URL が正しく構築されていることを示します。–</p>

ありがとう。

4

7 に答える 7

3

問題は明らかではありませんか、それとも私はばかげていますか? 次の関数では、マップ上のクリックを処理し、 を聞いてclick遅延させ500ms、関数を実行します。

$("#tab2.tab_content #map").delayed('click', 500, function() {
  state = window.location.hash.substring(1);
  alert(state);
  jsonLink = 'http://ml.uscm.org/ministries.json?state=' + state + '&active=true&callback=?';
  getMapResults();
  return false;
});

しかし、alertあなたstateがまだ設定していないので、それは空です。また、ブラウザがハッシュreturn false;を変更するのを停止します。

この機能を試してみてください。きっと何かが得られるでしょう:

$("#tab2.tab_content #map").delayed('click', 500, function() {
  setTimeout(function(){
    var state = window.location.hash.substring(1);
    alert(state);
    jsonLink = 'http://ml.uscm.org/ministries.json?state=' + state + '&active=true&callback=?';
    getMapResults();
  }, 500);
});

それを機能させる簡単な方法は、次のことを行うことです。

$("#tab2.tab_content #map a").delayed('click', 500, function(e) {
  state = $(this).attr('href').replace('#', '');
  alert(state);
});

これをコールバックに追加することで、ハッシュを手動で簡単に変更できます。

window.location.hash = state;

しかし、あなたの本当の問題は、a(アンカー)がハッシュ自体を変更していないことです。これにより、コードのどこかにそれを止めているように見えます。

于 2013-10-15T15:02:10.440 に答える
0

Chrome では、ハッシュのみを設定して固定できます。たとえば、次のようになります。

<a href="#exemplo" />

別の要素のハッシュを設定してこれを行う場合は、それをアンカーに交換してみてください。

このリンクでは、クロムがハッシュ プロパティを受け入れることがわかります:
http://www.w3schools.com/jsref/prop_loc_hash.asp

于 2013-10-10T15:03:35.953 に答える
0
var myURL = document.URL; //example http://www.ourdomain.com/thispage.html#IL
var getTheMagicWord = myURL.split("#");
console.log(getTheMagicWord[1]); //logs IL
于 2013-10-22T03:28:22.580 に答える
0

すべての助けと提案に感謝します。

質問に対する答えは、URL のパスを相対パスではなく絶対パスにする必要があるということでした。

例として、JavaScript の行は次のようになります。

"AL": {tooltip: 'Alabama', attr: {fill: '#F9B625', href: '#AL'}},

に:

"AL": {tooltip: 'Alabama', attr: {fill: '#F9B625', href: 'http://richcoy.com/locator/index2.html#AL'}},

これを 50 州すべてで変更すると、地図をクリックすると jasonp フィードからデータが正しく取得され、Chrome と Firefox のページに表示されました。

于 2013-10-21T15:51:08.597 に答える
0

コードを少し変更してみてはいかがでしょうか。

$("#tab2.tab_content #map a").click(function(){
 console.log($(this).attr("href"));//this outputs the value to the console
});

これにより、カリフォルニアの #CA が出力されます

すなわち

$("#tab2.tab_content #map a").delayed('click', 500, function() {

    //state = window.location.hash.substring(1);
state = $(this).attr("href").substring(1);
        alert(state);
    jsonLink = 'http://ml.uscm.org/ministries.json?state=' + state + '&active=true&callback=?';
    getMapResults();
    return false;
    });

イベントが発生したときにブレークポイント ( ln36 state = window.location.hash.substring(1);) を配置した場合、コード内でウィンドウの場所はまだ変更されていないため、その時点でハッシュは存在しません。

于 2013-10-15T15:09:47.877 に答える