私のWebアプリケーションでは、次のコードが関数内にあります。そして、私がfirefoxでコードを実行すると、うまく動作し、出力が得られます。しかし、私がクロムで同じコードを実行すると、関数は無限ループに入り、返ります(例外やエラーをスローしません)。コードはFirefoxで正常に動作していますが、Chromeでは動作しません。どうして?
情報:elem
は、html要素ではないxml要素です。
ファンクションコール:
buildElemView(viewElement, container, 1, viewType);
、その後、機能:
function buildElemView(elem, container, start, viewType){
var vwType = viewType;
var cat = $(elem).find('cat:first').text();
//alert("cat is "+cat);
var type = $(elem).find('type:first').text();
var id = $(elem).find('eid:first').text();
var mid = $(elem).find('mid:first').text();
var parentMids = $(elem).parents().map(function() {
return $(this).find('mid:first').text();
})
.get().reverse().join("");
if (viewType==1 && Number(eleCat>60) && Number(cat)<40)
return;
var parentElementId = parentMids;
var elementGroupId = parentMids+mid;
var grp = $(elem).find('gr:first').text();
var cz = $(elem).find('cz:first').text();
var zo = $(elem).find('zo:first').text();
var yo = $(elem).find('yo:first').text();
var rotate = ($(elem).find('rt:first').text().split(';'))[0];
var scale = ($(elem).find('sc:first').text().split(';'))[0];
var positionx = ($(elem).find('px:first').text().split(';'))[0];
var positiony = ($(elem).find('py:first').text().split(';'))[0];
var positionz = ($(elem).find('pz:first').text().split(';'))[0];
var dimension = $(elem).find('dm:first').text();
var parentdimension = $(elem).parent().find('dm:first').text();
var parentheight=0;
if (parentdimension !='')
parentheight = (parentdimension.split(';'))[2];
if (parentheight==undefined || parentheight=="null")
parentheight =0;
var height = 0;
if (dimension !='')
height = (dimension.split(';'))[2];
if (height==undefined || height=="null")
height =0;
var transformStr = "";
var num =0;
if (start && start==1)
{
transformStr= "translate(0,0) rotate(0) scale(1,1)";
if (viewType==1 && Number(eleCat)<100) {
var px = 0;
var py = 0;
if (scaleX==-1) px = 15000;
if (scaleY==-1) py = 15000;
transformStr = "translate("+ px+","+py +") rotate(0) scale("+ scaleX+","+scaleY+ ")";
}
if (Number(type)==50 || Number(type)==80 || Number(type)==100)
vwType=4;
}
else {
if (viewType<3 || Number(cat)>40)
{
if (viewType==2) {
var px = positionx;
var py = positiony;
var pz = positionz;
if (parentheight)
positiony = Number(parentheight)-Number(positionz)-Number(height);
}
//And there is a lot of Code here but its not even executing the entire code //strightly coming to alert box after clicking debug stepover.
}
機能とそのXMLは、コードは次のようである
SVG画像であり、大きすぎるので、私はこれだけ多くを与えることができます...
しかし、問題をデバッグすることで、ここで起こる...
var cat = $(elem).find('cat:first').text();
var type = $(elem).find('type:first').text();
var id = $(elem).find('eid:first').text();
var mid = $(elem).find('mid:first').text();
は、私はこのように、それらの間に警告メッセージを入れた後、結論に達しました。
var cat = $(elem).find('cat:first').text();
var type = $(elem).find('type:first').text();
alert("Alert");
var id = $(elem).find('eid:first').text();
var mid = $(elem).find('mid:first').text();
firefoxアラートが1回表示され、すべての行が実行されて返されます。しかし、クロムの警告で来ることを続けています。最初の2行と最後の2行はアラートを実行しているだけでなく、あまりにも継続的に実行しています。
情報:これはクロムバージョン47で正常に機能しましたが、現在はバージョンアップ後にバージョン49で動作しません。
なぜChromeのこの奇妙な動作を助けてください。
後に関数の定義を書いて解決し、あなたが私たちの全体の機能とどのようにあなたがそれを呼び出すを表示することができますか? – kogelnikp
Chromeコンソールにエラーがないとしますか? Chrome拡張機能をすべて無効にしようとしましたか? – Technoh
@Technohええ、スローされたエラーはありませんが、それはsvg XMLを実行していません... – Jack