IE 10,我的js坏了,除非控制台是打开的

时间:2015-03-02 14:29:14

标签: javascript console internet-explorer-10

我的js代码已经工作了几年,即9 / chrome&火狐。

我的控制台日志分散在我的js代码中,但即使提供我自己的console.log也无济于事。

我有一个列表,每个项目都有自己的onclick调用。



<ul>
<li id="l_page0" onclick="ic2_selectPage(0)">Air Handling Unit 1</li>
<li id="l_page1" onclick="ic2_selectPage(1)">Air Handling Unit 2</li>
</ul>
&#13;
&#13;
&#13;

使用IE10,传递索引的onclick函数似乎得到了错误的数据,即使用索引查找的变量数据会给出错误的内容。

&#13;
&#13;
function ic2_selectPage (thisPage) {
	console.log("ic2_selectPage, Start - index= " + thisPage) ;
	if (pages.busyDrawing) {
		console.log("ic2_selectPage, exit as still busy") ;
		return ;
	}	
	if (thisPage == pages.lastPage) {
		console.log("ic2_selectPage, exit as same page") ;
		return ;
	}	
	pages.busyDrawing = 1 ;
	document.getElementById("s_selection").innerHTML= "page " + pages.page[thisPage].name ;
	console.log("ic2_selectPage, Setting status bar page name: " + pages.page[thisPage].name + "  thisPage=" + thisPage) ;
	if (pages.lastPage != null) {
		document.getElementById("l_page"+pages.lastPage).style.background = "" ;	// Back to default
	}	
	document.getElementById("l_page"+thisPage).style.background = "#00ff11" ;
	if (pages.drawingsState) { 
		console.log("ic2_selectPage, hide open drawing") ;
		pages.page[pages.lastPage].svgObject.style.display = "none" ; 
	} else {
		pages.drawingsState = 1 ;
		document.getElementById("b_zoomin").disabled = false ;
		document.getElementById("r_drawing").style.display = "block" ;
	}	
	pages.lastPage = thisPage ;
	pages.maxWidth = document.getElementById("r_drawing").offsetWidth ;
	pages.maxHeight = document.getElementById("r_drawing").offsetHeight ;
	console.log("ic2_selectPage, pages.maxWidth=" + pages.maxWidth + "  pages.maxHeight=" + pages.maxHeight) ;
	if (pages.page[thisPage].svgObject != null) { 	// Unhide as exists
		console.log("ic2_selectPage, Unhide existing image") ;
		pages.page[pages.lastPage].svgObject.style.display = "block" ; 
		pages.busyDrawing = 0 ;
		return ;
	}
	console.log("ic2_selectPage, Opening drawing: " + pages.page[thisPage].name + "  thisPage=" + thisPage) ;
	document.getElementById("r_waitloading").style.display = "block" ;
	// Create new region for SVG object	
 	pages.page[thisPage].svgObject = document.createElement('object') ;
	pages.page[thisPage].svgObject.setAttribute('type', 'image/svg+xml') ;
	pages.page[thisPage].svgObject.setAttribute('data', pages.page[thisPage].image+"?check_304") ;
	pages.page[thisPage].svgObject.setAttribute('width', pages.maxWidth);
	pages.page[thisPage].svgObject.setAttribute('height', pages.maxHeight);
	pages.page[thisPage].svgObject.onload = function() { ic2_svgLoaded(thisPage) ; } ;
	var container = document.getElementById("r_drawing") ;
	container.appendChild(pages.page[thisPage].svgObject) ;
	pages.loadingTimerID =  setTimeout('ic2_svgLoadFailed('+thisPage+')',60000) ;	// 60 secs
	//pages.page[thisPage].svgObject.onload = function() { ic2_svgLoaded(thisPage) ; } ;
}
&#13;
&#13;
&#13;

如果我在执行代码后打开控制台,那么日志记录就会很混乱。

如果单击列表中的第二项,代码将在状态栏中显示正确的文本(index = 1的名称),但会获取链接到index = 0的图像文件。

然后打开控制台(F12),我得到以下内容:

&#13;
&#13;
HTML1300: Navigation occurred.
File: 127.0.0.1:88
ic2_onload, instanceID=971506572
ic2_clockInit, Start
ic2_cookieInit, Start
ic2_fetchSites, Start
ic2_jqueryListSites, Start
ic2_buildSitesList, Start
ic2_jqueryGetBranding, Start
ic2_getcookie, Start
ic2_verifyUser, Start
ic2_verifyUser, Resp:1
ic2_verifyUser, Done
login.proceed, Start
ic2_fetchPages, Start 
ic2_jqueryListPages, Start
ic2_buildPagesList, Start
ic2_wizard, start - pages
ic2_jqueryCountAlarms, Start
ic2_pages, Start
ic2_wizard, start - last
trend.hideTrend, Start
users.hideUsers, Start
ic2_selectPage, Start - index= 0
ic2_selectPage, Setting status bar page name: Air Handling Unit 1  thisPage=0
ic2_selectPage, pages.maxWidth=1360  pages.maxHeight=903
ic2_selectPage, Opening drawing: Air Handling Unit 1  thisPage=0
ic2_svgLoaded, Start
ic2_svgLoaded, svgDoc=[object Document]
ic2_svgLoaded, svgDoc.readyState=complete   svgDoc.childNodes=2
ic2_addPoints, Start
ic2_addPoints, svgRoot.width=2000  svgRoot.height=1412.19
ic2_addPoints, myComps.length=164
pixelsScale = 0.9992886402004599
&#13;
&#13;
&#13;

清楚地显示(11从底部)onclick传递index = 0 ...检查DOM确认点击的列表项确实具有正确的索引= 1.

1 个答案:

答案 0 :(得分:0)

Internet Explorer认为一个网站的console.log语句在其代码中被点击为开发网站,而不是生产。

完成编码后,删除所有的console.log语句,您的应用程序应该可以正常运行而不打开工具栏。

  • 所有这一切都是因为当关闭dev toolabar时window.console未定义。它是在您打开开发人员工具时定义的

如果你绝对需要保留你的控制台语句,那么将它们包装成这样(我不建议你在生产代码中使用控制台语句):

if (console){
    console.log("Screen is overrated!");
}