问候
我的一个客户端javascript文件失败了。我找到了原因,但这个发现让我真的很困惑,因为我从来没有见过这样的东西。
问题在于,当浏览器读取脚本源并输入包含543行代码的特定自定义.js文件时,它只会读取到第502行,即if (isValidWidthChange) {
,但令我困惑的是当我在IE中使用开发人员工具并在FireFox中使用firebug并使用他们的脚本调试工具时,当它到达第502行时,javascript就会被切断 - if (isValidWidthChan
if (isValidWidthChange) {
if (isValidWidthChan
任何人都可以给我一个逻辑解释为什么会发生这种情况?
我可以这么说,我在文件中添加了一些东西,但是我在开始之前对原版进行了备份,这实际上是即使在我设置网站使用之后仍然出现的错误原始文件。
我已经尝试了很多次IISRESET。我试过从健康的环境中复制文件。我清除了浏览器和服务器上的所有缓存。但它仍然出现。
我自己没有开发它,它是第三方产品。但这从未发生过。
发生错误的代码区
(function($) {
// jQuery autoGrowInput plugin by James Padolsey
// See related thread: http://stackoverflow.com/questions/931207/is-there-a-jquery-autogrow-plugin-for-text-fields
$.fn.autoGrowInput = function(o) {
o = $.extend({
maxWidth: 1000,
minWidth: 0,
comfortZone: 70
}, o);
this.filter('input:text').each(function() {
var minWidth = o.minWidth || $(this).width(),
val = '',
input = $(this),
testSubject = $('<tester/>').css({
position: 'absolute',
top: -9999,
left: -9999,
width: 'auto',
fontSize: input.css('fontSize'),
fontFamily: input.css('fontFamily'),
fontWeight: input.css('fontWeight'),
letterSpacing: input.css('letterSpacing'),
whiteSpace: 'nowrap'
}),
check = function() {
if (val === (val = input.val())) { return; }
// Enter new content into testSubject
var escaped = val.replace(/&/g, '&').replace(/\s/g, ' ').replace(/</g, '<').replace(/>/g, '>');
testSubject.html(escaped);
// Calculate new width + whether to change
var testerWidth = testSubject.width(),
newWidth = (testerWidth + o.comfortZone) >= minWidth ? testerWidth + o.comfortZone : minWidth,
currentWidth = input.width(),
isValidWidthChange = (newWidth < currentWidth && newWidth >= minWidth)
|| (newWidth > minWidth && newWidth < o.maxWidth);
// Animate width
if (isValidWidthChange) { // This is where it stops
input.width(newWidth);
}
};
testSubject.insertAfter(input);
$(this).bind('keyup keydown blur update', check);
});
return this;
};
})(jQuery);
答案 0 :(得分:1)
这可能是编码问题,请确保所有脚本中都没有特殊字符;
查看Owns和Rate附近的字符,浏览器会忽略这些字符,并且脚本会被其中的数量截断
/*
Mapping GUI to event types
Click - clickEvents
Purchase -purchaseEvents
Consume - consumeEvents
Recommended - clickedRecommended
Rendered - renderedEvents
Rate ײateEvents
Blacklist - blacklistEvents
Owns ׯwnsEvents
Total
*/
答案 1 :(得分:0)
您是否可以将脚本分成两部分? 543行是相当多的代码,如果没有至少一些函数或模块可以移动到单独的脚本,我会感到惊讶。
至于调试问题,您的症状会表明您的服务器可能具有某种最大内容长度。我知道请求有最大值(最大值?)(有一个名为maxAllowedContentLength
的东西,可配置),但如果文件大小有一个上限服务。 (坦率地说,那该死的很愚蠢,并且会引起很多问题但是嘿,IIS并不总是很聪明 - 或者你的管理员可能有点过于简约了?)。检查最大值是行还是(更可能)字节是很有趣的。所以,要检查一下,你试过了吗?
这些实验和类似的结果将有助于缩小问题范围。