2009-02-10 10 views
10

मैं अद्यतन पैनलों पर पीले फीड करने के लिए एएसपी.Net हाइपरलिंक के लिए पृष्ठभूमि को एनिमेट करने का प्रयास कर रहा हूं। अब तक यह लगभग हर समय काम करता है, लेकिन कभी-कभी जावास्क्रिप्ट त्रुटि "अवैध प्रस्ताव मान" फेंक दिया जाता है। और यह दस्तावेज़ पर jQuery रंग प्लग में इस लाइन के लिए कोड में डिबग करता है ...jquery color एनीमेशन फेंकता है अमान्य संपत्ति मान अंतःस्थापित

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(",") + ")";

यहाँ घटनाओं वे वर्तमान में हो रही हैं के रूप में के आदेश है ...

पहले, विंडो लोड इतना .ready यह पंजीकृत करता है एक घटना बाहर ले जाया गया जब अद्यतन पैनल इसलिए की तरह ताज़ा समाप्त हो गया है ...

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

कहाँ yellowFade के रूप में परिभाषित किया गया है ...

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

अब, शायद ही कभी मैं इसे इस बिंदु पर सही दुर्घटना लेकिन आम तौर पर इसे बाद में है मिला है, तो मैं जारी रखेंगे ...

मैं फिर "" एक यूआरएल एएसपी लोड करता है बनाता है कि शीर्षक से एक बटन को क्लिक करें URL के लिए पाठ के साथ नेट हाइपरलिंक यह बनाई और फिर जावास्क्रिप्ट के माध्यम से सेट यह पीले रंग के माध्यम से फीका करने के लिए करने के लिए पृष्ठभूमि रंग है ...

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

मैं शुरू में था कि यह कोड में रंग के पीछे के माध्यम से की स्थापना यह कोड ...

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

लेकिन फिर मैंने सोचा कि शायद बैक रंग कुछ चीज़ों पर सेट हो रहा था जो jQuery रंग प्लग-इन को पहचान नहीं पाया जा सकता था, या चूंकि इसे सर्वर की ओर सेट किया जा रहा था, इसलिए प्लग-इन इसकी शैली या कुछ तक नहीं पहुंच सका लेकिन इसे अभी भी बदल रहा था बग फिक्सिंग पर कोई प्रभाव नहीं।

अंत में, यूआरएल के पीठ रंग को सफेद से पीले रंग में बदल देता है, क्योंकि मैंने कहा कि ज्यादातर समय यह ठीक है लेकिन यह शायद ही कभी एक त्रुटि "अवैध संपत्ति मूल्य" फेंकता है।

जहां तक ​​मैं अपना वाक्यविन्यास बता सकता हूं वह रंग एनिमेशन का उपयोग करने के लिए ही होना चाहिए। मुझे इस तथ्य की तरह लगता है कि मैं एक अपडेट पैनेल का उपयोग कर रहा हूं, यहां पर विनाश हो सकता है लेकिन मुझे यकीन नहीं है।

क्या किसी के पास ऐसी कोई चीज़ पैदा करने में कोई अंतर्दृष्टि है? यह एक वास्तविक गड़बड़ है जो डीबग करने की कोशिश कर रहा है क्योंकि यह इस तथ्य को अनदेखा कर रहा है कि जावास्क्रिप्ट पहले ही डीबग करने का दर्द है।

विंडोज विस्टा पर jquery 1.3.1 और jquery.color 1.0 का उपयोग करना। विजुअल स्टूडियो 2008 का उपयोग करना। मुझे बताएं कि क्या कुछ भी है जिसे मैं साफ़ कर सकता हूं।

संपादित करें: डैंग, अभी तक एक प्रतिक्रिया नहीं है। मैंने इस पर काम करने से थोड़ा अंतर उठाया है, लेकिन मुझे बस अपने ऐप के दूसरे हिस्से में बग मिला जहां मैं पीला फीका कर रहा हूं। इन दोनों पृष्ठों में एक अद्यतन पैनल का उपयोग करें। मैं कई मामलों में अपडेट पैनल का प्रशंसक नहीं हूं और यह निश्चित रूप से मेरी jquery पर कहर बरबाद कर दिया है। मैं सोच रहा हूं कि इसके साथ कुछ करने के लिए क्या है। ओह, यह पूरी तरह से विस्टा चीज से जुड़ा हुआ था लेकिन मैं बताउंगा कि मैं आईआईएस 7 पर चल रहा हूं।

क्या इससे कोई अंतर्दृष्टि उकसाती है?

उत्तर

7

मुझे लगता है कि मैं एक और परियोजना पर आपके जैसा ही समस्या में भाग गया; मेरे पास एक और डीआईवी के अंदर एक डीआईवी था (जिसकी पृष्ठभूमि स्पष्ट रूप से परिभाषित नहीं थी।) मैं आंतरिक डीआईवी के पृष्ठभूमि रंग को "फ्लैश" करने की कोशिश कर रहा था और उस त्रुटि में चल रहा था। कंटेनर डीआईवी को एक विशिष्ट रंग सौंपने के बाद ही त्रुटि दूर हो गई।

+0

मैन, मुझे लगता है कि यह है! मैं अभी तक आपको जवाब देने पर रोक लगाने जा रहा हूं, लेकिन मेरे पास एक ही स्थिति थी (कोई पृष्ठभूमि रंग वाला दादाजी div)। मैंने एक गुच्छा का परीक्षण किया है और त्रुटि अभी तक वापस नहीं आ गई है। – Carter

+1

मुझे इस तथ्य से नफरत है कि इतनी अप्रत्याशित थी - ऐसा लगता है कि कम से कम समय के लिए काम किया है। – Rio

+1

मुझे यह जोड़ना चाहिए कि यह मेरी समस्या की मदद करने के लिए ही लग रहा था, लेकिन अंत में इसे खत्म नहीं किया। JQuery में एक बग है, नीचे प्रतिक्रिया देखें। –

7

मुझे कुछ टीडी elemtents पर पृष्ठभूमि रंग एनीमेशन के साथ IE8 में एक ही समस्या थी। यह तब भी जारी रहा जब मैंने tr को पृष्ठभूमि रंग दिया।

मुझे लगता है कि मैंने jquery.ui में कुछ कोड बदलकर इसे ठीक कर दिया है।

// 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) { 

बदलें:

if (fx.state == 0) 

करने के लिए:

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

कभी-कभी जब इस कोड के निष्पादित होने

इस खंड का पता लगाएं। fx.State 0 नहीं है, लेकिन fx.start और fx.end को आरजीबी सरणी के रूप में प्रारंभ नहीं किया गया है। अद्यतन कोड में, हम fx.start और fx.end arrays को प्रारंभ करते हैं यदि उन्हें प्रारंभ नहीं किया गया है।

ऐसा लगता है कि इसे ठीक किया गया है, लेकिन एक अड़चन समस्या पर सुनिश्चित करना मुश्किल है।

अधिक यहाँ विवरण: http://dev.jqueryui.com/ticket/4251

+0

पैरेंट पृष्ठभूमि-रंग सेट करना मेरे लिए काम नहीं करता था। लेकिन इस समाधान ने किया। – mcqwerty

+0

+1, सही स्पष्टीकरण + ट्रैक टिकट के लिए लिंक, मैं अपनी समस्या को वूडू के बजाय आत्मविश्वास से ठीक कर सकता हूं :) बीटीडब्ल्यू - आप इस कोड के बजाय अपने अंतिम फिक्स का उपयोग कर सकते हैं: http://github.com/jquery/jquery- ui/commit/217266fb62b821e8edc0aeb37428a7370848e060 – orip

2

jQuery color plugin के साथ इस मुद्दे होने वालों के लिए, एक बहुत अच्छी हैक की तरह कम कुछ करने के लिए

if (fx.state == 0) { 

बदलने के लिए

if (fx.state <= 0.045) { 

अजीब तरह पर्याप्त fx है .state हमेशा 0 नहीं होता है, यही कारण है कि अवैध संपत्ति त्रुटि कभी-कभी फेंक दी जाती है।

+1

-1: त्रुटि दौड़ की स्थिति के कारण होती है जहां प्रारंभिकता चलाने से पहले fx.state 0 से अधिक हो सकता है। अधिक मूल्यों को स्वीकार करने से दौड़ की स्थिति के लिए खिड़की कम हो जाती है, लेकिन अनावश्यक पुनर्मूल्यांकन का कारण बनता है और दौड़ की स्थिति अभी भी वहां होती है (यदि देरी किसी कारण से अधिक हो जाती है)। Http://dev.jqueryui.com/ticket/4251 पर लांस फिशर का उत्तर और टिप्पणियां देखें – orip

2

jQuery साइट पर फ़िक्स नीचे है (भविष्य में रिलीज में होना चाहिए)। effects.core.js में, परिवर्तन:

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

रहे हैं:

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

यह पूरी तरह समस्या मेरे लिए मंजूरी दे दी।

0

यदि आप कुछ ब्राउज़रों (फ़ायरफ़ॉक्स में काम करता है, Google क्रोम में नहीं) में कुछ तत्वों को एनिमेट करने का प्रयास कर रहे हैं तो यह काम नहीं करता है। उदाहरण के लिए, यह एक HTML कैनवास के साथ काम नहीं करेगा। fx.start अपरिभाषित होगा।

मेरे 'हैक' यह उदाहरण के लिए एचटीएमएल कैनवस तत्वों के साथ काम करने के लिए प्राप्त करने के लिए -

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

मैं रंग सेटर समारोह फिर से लिख दिया, Nans आरजीबी मूल्य में प्रचार को रोकने के लिए, इस समस्या का हल।

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

मेरे पास एक और समाधान है, यह मेरे लिए काम करता है।

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

इस से पहले:

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

मैं jquery.color.js के साथ इसी तरह की समस्या हो रही थी बस इन सत्यापन पंक्तियाँ जोड़ें। इसे jquery.effects.core.js (jquery ui प्रभाव कोर) का उपयोग करके हल किया गया।

मुझे आशा है कि यह आपके लिए भी काम करेगा।

संबंधित मुद्दे