2009-02-10 42 views
10

Tôi đang cố gắng tạo hiệu ứng nền cho liên kết ASP.Net để làm mờ màu vàng trên làm mới bảng cập nhật. Cho đến nay nó hoạt động gần như mọi lúc, nhưng thỉnh thoảng một lỗi javascript được ném vào "Giá trị hợp lệ không hợp lệ". và nó debugs vào màu jquery plug-in mã để dòng này ...hoạt ảnh màu jquery ném Giá trị thuộc tính không hợp lệ liên tục

fx.elem.style[attr] = "rgb(" + [ 
    Math.max(Math.min(parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0]), 255), 0), 
    Math.max(Math.min(parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1]), 255), 0), 
    Math.max(Math.min(parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2]), 255), 0) 
].join(",") + ")";

Dưới đây là thứ tự của sự kiện khi chúng đang xảy ra ...

Thứ nhất, tải cửa sổ vv doc .ready nó đăng ký một sự kiện được thực hiện khi bảng điều khiển cập nhật đã hoàn thành làm mới như vậy ...

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(yellowFade); 

đâu yellowFade được định nghĩa là ...

function yellowFade() { 
    window.setTimeout("$('#' + hyperlinkUrlId).animate({ backgroundColor: 'white' }, 2000)", 2000); 
    window.clearTimeout(); 
} 

Hiện tại, hiếm khi tôi gặp sự cố tại thời điểm này nhưng thường là sau này, vì vậy tôi sẽ tiếp tục ...

Sau đó, tôi nhấp vào nút có tiêu đề "Tạo" để tạo URL tải ASP Net siêu liên kết với các văn bản cho URL nó tạo ra và sau đó thông qua javascript bộ đó là màu nền sang màu vàng mờ dần từ qua này ...

$("#" + hyperlinkUrlId).css("background-color", "#FBFF9C");

ban đầu tôi đã có nó thiết lập các màu sắc trong các mã sau qua mã này ...

Url.BackColor = ColorTranslator.FromHtml("#FBFF9C");

Nhưng sau đó tôi nghĩ có lẽ màu sau đã được đặt thành thứ gì đó mà trình cắm màu jquery không thể nhận ra, hoặc vì nó đang được cài đặt phía máy chủ, trình cắm không thể truy cập phong cách hoặc thứ gì đó, nhưng thay đổi nó vẫn có không ảnh hưởng đến việc sửa lỗi.

Cuối cùng, tạo ra thay đổi màu sắc của URL từ màu trắng sang màu vàng sau đó như tôi đã nói hầu hết thời gian nó mờ dần nhưng hiếm khi nó ném lỗi "Giá trị thuộc tính không hợp lệ".

Theo như tôi có thể nói cú pháp của tôi chỉ là cách cần thiết để sử dụng các hoạt ảnh màu. Tôi cảm thấy như thực tế rằng tôi đang sử dụng một updatepanel có thể đang tàn phá ở đây nhưng tôi không chắc chắn.

Có ai có bất kỳ thông tin chi tiết nào về điều gì có thể gây ra điều như vậy không? Nó đã được một mess thực sự cố gắng để gỡ lỗi vì nó xảy ra như vậy thường xuyên bỏ qua thực tế là javascript đã là một nỗi đau để gỡ lỗi.

Sử dụng jquery 1.3.1 và jquery.color 1.0 trên Windows Vista. Sử dụng Visual Studio 2008. Hãy cho tôi biết nếu có bất cứ điều gì tôi có thể xóa.

CHỈNH SỬA: Đằng, chưa có phản hồi nào. Tôi đã có một chút gián đoạn khi làm việc về điều này nhưng tôi chỉ tìm thấy lỗi trong một phần khác của ứng dụng của tôi, nơi tôi đang làm mờ dần màu vàng. Cả hai trang này đều sử dụng bảng cập nhật. Tôi không phải là một fan hâm mộ của bảng điều khiển cập nhật trong nhiều trường hợp và nó đã chắc chắn tàn phá jquery của tôi. Tôi tự hỏi nếu nó có cái gì để làm với điều này. Ồ, điều này đã được ngụ ý với toàn bộ điều Vista nhưng tôi sẽ chỉ ra rằng tôi đang chạy trên IIS7.

Điều này có gây ra bất kỳ thông tin chi tiết nào không?

Trả lời

7

Tôi nghĩ rằng tôi đã gặp phải vấn đề tương tự như bạn trên một dự án khác; Tôi đã có một DIV bên trong một DIV khác (mà không có nền tảng của nó được xác định rõ ràng.Tôi đã cố gắng "flash" màu nền của DIV bên trong và đang chạy vào lỗi đó. Chỉ sau khi tôi đã gán một màu cụ thể cho vùng chứa DIV thì lỗi đó đã biến mất.

+0

Con người, tôi nghĩ thế là xong! Tôi sẽ tiếp tục cung cấp cho bạn câu trả lời, nhưng tôi đã có tình huống tương tự (một ông bà div không có màu nền). Tôi đã thử nghiệm một bó và lỗi là chưa được trả lại. – Carter

+1

Tôi ghét thực tế là không thể đoán trước được - dường như nó đã hoạt động, ít nhất là trong thời gian này. – Rio

+1

Tôi chỉ nên thêm điều này dường như giúp tôi giải quyết vấn đề, nhưng cuối cùng không loại bỏ nó. Có một lỗi trong jQuery, xem các câu trả lời dưới đây. –

7

Tôi đã gặp vấn đề tương tự trong IE8 với hoạt ảnh màu nền trên một số elemtents td. Nó tiếp tục tồn tại mặc dù tôi đã đưa màu nền cho tr.

Tôi nghĩ rằng tôi đã sửa nó ngay bây giờ, bằng cách thay đổi một số mã trong jquery.ui.

Tìm phần này:

// We override the animation for all of these color styles 
$.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'color', 'outlineColor'], function(i, attr) { 
    $.fx.step[attr] = function(fx) { 
     if (fx.state == 0) { 

Thay đổi:

if (fx.state == 0) 

Để:

if (fx.state == 0 || fx.start.constructor != Array || fx.end.constructor != Array) 

Đôi khi mã này được thực thi. fx.State không phải là 0, nhưng fx.start và fx.end chưa được khởi tạo dưới dạng mảng RGB. Trong mã được cập nhật, chúng tôi khởi tạo các mảng fx.start và fx.end nếu chúng chưa được khởi tạo.

Điều đó dường như đã sửa nó, nhưng thật khó để chắc chắn về một vấn đề liên tục.

Xem thêm chi tiết ở đây: http://dev.jqueryui.com/ticket/4251

+0

Đặt màu nền gốc không hoạt động đối với tôi. Nhưng giải pháp này đã làm. – mcqwerty

+0

+1, giải thích hoàn hảo + liên kết tới vé Trác, tôi có thể khắc phục sự cố của mình với sự tự tin thay vì voodoo :) BTW - bạn có thể sử dụng sửa lỗi cuối cùng thay vì mã này: http://github.com/jquery/jquery- ui/commit/217266fb62b821e8edc0aeb37428a7370848e060 – orip

2

Đối với những người có vấn đề này với jQuery color plugin, đủ tốt hack là thay đổi

if (fx.state == 0) { 

một cái gì đó thấp như

if (fx.state <= 0.045) { 

Lạ lùng thay fx .state không phải lúc nào cũng là 0, đó là lý do tại sao lỗi tài sản không hợp lệ bị ném thỉnh thoảng.

+1

-1: lỗi được gây ra bởi một điều kiện chủng tộc trong đó fx.state có thể lớn hơn 0 trước khi khởi tạo đã chạy. Chấp nhận các giá trị lớn hơn làm giảm cửa sổ cho điều kiện chủng tộc, nhưng gây ra sự suy giảm không cần thiết và điều kiện cuộc đua vẫn còn đó (nếu sự chậm trễ thậm chí còn lâu hơn vì một lý do nào đó). Xem câu trả lời của Lance Fisher và các bình luận trên http://dev.jqueryui.com/ticket/4251 – orip

2

Khắc phục trên trang web jQuery ở bên dưới (phải nằm trong bản phát hành trong tương lai). Trong effects.core.js, thay đổi:

if (fx.state == 0) { 
    fx.start = getColor(fx.elem, attr); 
    fx.end = getRGB(fx.end); 
} 

tới:

if (!fx.colorInit) { 
    fx.start = getColor(fx.elem, attr); 
    fx.end = getRGB(fx.end); 
    fx.colorInit = true; 
} 

này hoàn toàn xóa các vấn đề lên cho tôi.

0

Điều này dường như không hoạt động nếu bạn đang cố gắng tạo hiệu ứng cho một số thành phần trong các trình duyệt nhất định (hoạt động trong Firefox, không phải trong Google Chrome). Ví dụ: thao tác này sẽ không hoạt động với HTML Canvas. fx.start sẽ không được xác định.

của tôi 'hack' để làm cho nó làm việc với các phần tử HTML Canvas ví dụ -

if (fx.start == undefined) { fx.start = getRGB('white'); } 
1

Tôi đã viết lại các hàm setter màu, để ngăn chặn Nans tuyên truyền vào giá trị RGB, điều này giải quyết vấn đề.

var r = Math.max(Math.min(parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0]), 255), 0); 
var g = Math.max(Math.min(parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1]), 255), 0); 
var b = Math.max(Math.min(parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2]), 255), 0); 
if (!isNaN(r) && !isNaN(g) && !isNaN(b)) 
{ 
    var rgb = "rgb(" + [r,g,b].join(",") + ")"; 
    fx.elem.style[attr] = rgb; 
} 
1

Tôi có một giải pháp khác, nó phù hợp với tôi.Chỉ cần thêm những dòng này xác nhận:

if (fx.start == undefined) { fx.start = getRGB('white'); } 
if (fx.end == undefined) { fx.end = getRGB('white'); } 

Trước đó:

fx.elem.style[attr] = "rgb(" + [ 
Math.max(Math.min(parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0]), 255), 0), 
Math.max(Math.min(parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1]), 255), 0), 
Math.max(Math.min(parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2]), 255), 0)].join(",") + ")"; 
1

Tôi đã có vấn đề tương tự với jquery.color.js. Giải quyết vấn đề này bằng cách sử dụng jquery.effects.core.js (lõi hiệu ứng jquery ui).

Tôi hy vọng nó cũng phù hợp với bạn.

Các vấn đề liên quan