简体   繁体   English

为什么此远程脚本导致IE6挂起?

[英]Why does this remote script cause IE6 to hang?

Please take a look at the html listed below and let me know why IE6 freezes when trying to load the remote script (located at ' http://code.katzenbach.com/Default.aspx '). 请查看下面列出的html,让我知道为什么在尝试加载远程脚本(位于' http://code.katzenbach.com/Default.aspx ')时IE6冻结。 The script returns JSONP and executes the 'callbackFunction' listed in the header. 该脚本返回JSONP并执行标题中列出的“ callbackFunction”。 When it runs correctly, you'll see a pop-up alert showing numbers 1-500. 当它正确运行时,您会看到一个弹出警报,显示数字1-500。 This works fine in FF3 and IE7. 在FF3和IE7中可以正常工作。 I can't understand why it fails in Internet Explorer 6 -the processor gets pegged and everything hangs. 我不明白为什么它无法在Internet Explorer 6中失败-处理器被挂住,并且一切都挂起了。

Run it yourself and let me know if you experience the same problem. 自己运行它,让我知道您是否遇到相同的问题。 I've been staring at this problem all day. 我整天都在盯着这个问题。 Thanks for your help. 谢谢你的帮助。

Andrew 安德鲁

<html>
<head>
    <script type="text/javascript">
    function callbackFunction(Result)
    {
        alert(Result) ;
    }
    </script>
    <script type="text/javascript" src="http://code.katzenbach.com/Default.aspx?callback=callbackFunction&test=true&c=500"></script>
</head>
<body>
Here
</body>
</html>

I took a look with Fiddler and IE6 and was unable to see anything out of the ordinary (besides the fact that it freezes the browser). 我查看了Fiddler和IE6,但看不到任何异常(除了它冻结了浏览器的事实)。

The request to http://code.katzenbach.com/Default.aspx?callback=callbackFunction&test=true&c=500 does get made and returns 2909 bytes. 确实发出了对http://code.katzenbach.com/Default.aspx?callback=callbackFunction&test=true&c=500的请求,并返回2909字节。

I'd suggest three things: 我建议三件事:

  1. Remove one of the semi-colons from your Content-Type: application/json;; charset=utf-8 从您的Content-Type中删除一个分号: application/json;; charset=utf-8 application/json;; charset=utf-8 or maybe remove both semi-colons and charset=utf-8 entirely (just to test) application/json;; charset=utf-8或完全删除分号和charset=utf-8charset=utf-8测试)
  2. Send a newline character after you're done sending the final ) of callbackFunction 发送完callbackFunction的final )后,发送换行符
  3. Change it to Content-Type: text/javascript because you really are returning Javascript to the browser, and the other content type might be confusing IE6 (although it is very unlikely). 将其更改为Content-Type: text/javascript因为您实际上是将Javascript返回到浏览器,并且其他内容类型可能会使IE6感到困惑(尽管这不太可能)。

I'm thinking 1. is most likely. 我在想1.很有可能。 There may be a parsing bug in IE6 that causes it to go into an endless loop when it encounters two semi-colons. IE6中可能存在一个解析错误,导致它在遇到两个分号时陷入无休止的循环。 Because otherwise there simply isn't any reason why what you are doing should not work. 因为否则,根本没有任何理由使您的工作不起作用。

It also might be worthwhile to try a different MIME type as a test. 尝试使用其他MIME类型作为测试也是值得的。

The return is of the external script is: 外部脚本的返回是:

callbackFunction(["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","107","108","109","110","111","112","113","114","115","116","117","118","119","120","121","122","123","124","125","126","127","128","129","130","131","132","133","134","135","136","137","138","139","140","141","142","143","144","145","146","147","148","149","150","151","152","153","154","155","156","157","158","159","160","161","162","163","164","165","166","167","168","169","170","171","172","173","174","175","176","177","178","179","180","181","182","183","184","185","186","187","188","189","190","191","192","193","194","195","196","197","198","199","200","201","202","203","204","205","206","207","208","209","210","211","212","213","214","215","216","217","218","219","220","221","222","223","224","225","226","227","228","229","230","231","232","233","234","235","236","237","238","239","240","241","242","243","244","245","246","247","248","249","250","251","252","253","254","255","256","257","258","259","260","261","262","263","264","265","266","267","268","269","270","271","272","273","274","275","276","277","278","279","280","281","282","283","284","285","286","287","288","289","290","291","292","293","294","295","296","297","298","299","300","301","302","303","304","305","306","307","308","309","310","311","312","313","314","315","316","317","318","319","320","321","322","323","324","325","326","327","328","329","330","331","332","333","334","335","336","337","338","339","340","341","342","343","344","345","346","347","348","349","350","351","352","353","354","355","356","357","358","359","360","361","362","363","364","365","366","367","368","369","370","371","372","373","374","375","376","377","378","379","380","381","382","383","384","385","386","387","388","389","390","391","392","393","394","395","396","397","398","399","400","401","402","403","404","405","406","407","408","409","410","411","412","413","414","415","416","417","418","419","420","421","422","423","424","425","426","427","428","429","430","431","432","433","434","435","436","437","438","439","440","441","442","443","444","445","446","447","448","449","450","451","452","453","454","455","456","457","458","459","460","461","462","463","464","465","466","467","468","469","470","471","472","473","474","475","476","477","478","479","480","481","482","483","484","485","486","487","488","489","490","491","492","493","494","495","496","497","498","499"])

Why do you want to alert this? 您为什么要提醒这一点?
What problem are you trying to solve? 您要解决什么问题?

If you go directly to the script ( http://code.katzenbach.com/Default.aspx?callback=callbackFunction&test=true&c=500 ), you'll see the file (unknown mime type) is not being processed. 如果直接转到脚本( http://code.katzenbach.com/Default.aspx?callback=callbackFunction&test=true&c=500 ),则会看到该文件(未知的MIME类型)未得到处理。 This is likely due to a problem with your server setup. 这可能是由于服务器设置出现问题。 It doesn't seem to know how to process .aspx and in instead trying to stream out the file. 它似乎不知道如何处理.aspx,而是尝试流式传输文件。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM