Googleマップを使用してジョージア州のすべての郡を表示し、ユーザーがクリックして選択した郡についての国勢調査データを収集できるよう、過去1週間のページを作成しました。郡はGPolygonsの配列である、と私は、この(sudoのコード)とのインタラクティブマップを実装しました:私は(クロームで全体の時間をテスト)ページ上で作業している間にこれは素晴らしい仕事をChromeがjavascriptからクラッシュする
instantiate map;
fill polys[] array from vb code-behind;
for (var i=0; i<polys.length; i++) {
GEvent.addListener(polys[i], "click", function() {
highlight polygon and select item in listbox;
or
un-highlight polygon and deselect item in listbox;
}
}
先日、私が作業していたページやそのページの操作がほぼ完了したので、私が開いた時間の90%がクラッシュし始めました。これらのクラッシュは非常に激しく、コンピュータが完全に復旧するまでに15分ほどかかります。それはクロムだけでなく、私のコンピュータ全体に影響を与えます。私は、ページ上のすべてのjavscriptをコメントアウトし、セグメントごとに再導入し、問題領域はポリゴンオーバーレイ上にリスナーを作成するforループです。ループ自体とコード内の問題ではないことを確認するために、私はループ条件をシミュレートし、Webページは依然としてクロムでクラッシュします。
var count=0;
for (var i=0; i<5; i++)
count=1;
alert(count);
このような単純なループでも、ページはクラッシュします。なぜこのコードを処理できないのかわからない。誰でもこの問題を解決する方法に関する提案はありますか?このページは、FirefoxとIE9で正常に開きます。
--update--より鮮やかにクラッシュを説明するために:クロームページのロードを開始します。ページはまだ空白になっていますが、マウスを動かすだけでマウスオーバーやクリックで何も起こらない限り、物事は減速し始め、マシン全体がますます反応しなくなります。コンピュータは約10分間停止したままになり、 "Aw、snap!"エラーページが表示され、クラッシュ後さらに5分間遅く応答しなくなります。 エラーを引き起こす関数全体がここにあります。
var polys = [];
var labelsAr = [];
var poly;
var point; var point2;
var marker;
var label;
var map;
if (document.getElementById("map") != undefined) {
// init map
map = new GMap2(document.getElementById("map")); }
var pnames;
pnames = "<%=pnames%>";
var labels = pnames.split(",");
function setupmap(){
if (GBrowserIsCompatible()) {
if (document.getElementById("map") != undefined) {
polyfip = [];
<%=polyfipSt%>
// add map controls and set loc
// the map = new GMap2 statement is not within a code block
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.setCenter(new GLatLng(32.80, - 83.50), 7);
var colour = "#ff6666";
var tooltip = document.createElement("div");
map.getPane(G_MAP_FLOAT_PANE).appendChild(tooltip);
tooltip.style.visibility="hidden";
<%=output%>
//PROBLEM CODE
for (var i=0; i<polys.length; i++) {
GEvent.addListener(polys[i], "click", function() {
var evtObj = window.event ? event : e;
for (var i=0; i<polys.length; i++) {
if (this == polys[i]) {
if (evtObj.ctrlKey) {
map.closeInfoWindow();
clickCounty(labels[i]); //a function elsewhere defined with simple if-else checks to highlight the county
}
else {
if (document.forms["pageform"].MainContent_CountySelection.options[i].selected==true && countiesSelected==1) {
clickCounty(labels[i]);
map.closeInfoWindow();
}
else {
var overlaylatlng = this.getVertex(0);
for (var j = 0; j < document.forms["pageform"].MainContent_CountySelection.length; j++) {
document.forms["pageform"].MainContent_CountySelection.options[j].selected=false;
var tempPoly = polys[j];
tempPoly.color = "EFEDB0";
map.addOverlay(tempPoly);
}
countiesSelected = 0;
//an infowindow with some js function links
var infoWindow = map.openInfoWindowHtml(overlaylatlng,"<form id='f" + i + "' name='f" + i + "' method='post' action='countystats.aspx'><input type='hidden' name='countyName' id='countyName' value='" + labels[i] + "' /></form> County: "+labels[i]+" <br /><br /><a href='javascript:submitForm(\"f" + i + "\")'>Core Data</a><br /><form id='fs" + i + "' name='fs" + i + "' method='post' action='countystats2.aspx'><input type='hidden' name='countyName' id='countyName' value='" + labels[i] + "' /></form><a href='javascript:submitForm(\"fs" + i + "\")'>Single Tract Statistics</a> <form id='fsc" + i + "' name='fsc" + i + "' method='post' action='getACScounty.aspx'><input type='hidden' name='countyName' id='countyName' value='" + labels[i] + "' /></form><a href='javascript:submitForm(\"fsc" + i + "\")'>ACS All Tracts in County Statistics</a> <br /><a href=getsp1.aspx?countylist='" + polyfip[i] + "'>Census2010 County</a> <form id='fscsp" + i + "' name='fscsp" + i + "' method='post' action='getACScountysp.aspx'><input type='hidden' name='countyName' id='countyName' value='" + polyfip[i] + "' /></form><a href='javascript:submitForm(\"fscsp" + i + "\")'>Census2010 Sub-County</a>");
clickCounty(labels[i]);
}
}
break;
}
}
});
}
//END PROBLEM CODE
}
}
}
<% =出力は> []配列、およびそれらがマップ微細に表示されポリゴンにVisual Basicのコードで書かれた多角形の全体のスルーです。
スクリプトのPROBLEM CODEセグメントをコメントアウトすると、必要な機能がなくてもページが正常に読み込まれます。セグメントを含めると、ページがクラッシュします。しかし、問題コードを省略し、この関数内に別のforループを含めても、ページがクラッシュします。
for (var i=0; i<5; i++) { }
などのforループもこのページをクラッシュします。私は今この問題を何日も抱え続けており、それが私を狂わせてしまっている。誰でも問題が何であるかについて何か考えがあります..
また、私はクロムでコンソールに移動してサンプルループを入力すると、正常に実行されます。つまり、入力した場合は、必要に応じて、クリックすると正しく呼び出される各オーバーレイにリスナーが生成されます。ここでも、関数内にこれを含めてページをクラッシュさせますが、コンソールでうまく動作します。
単純なループを空白ページのコンソールにコピー/ペーストすると、クラッシュするのですか? ...そうでない場合、あなたの問題は他の場所にあります。 – jondavidjohn
「クラッシュ」を定義します。正確な行動を記述します。 –
「クラッシュ」が「私は「ああ、スナップ」を持っています。ページを参照してください。その後、 'chrome:// crashes'を訪問し、バグ/クラッシュレポートを送信してください。問題を再現できる場合は、コードを参照してください。 –