ফিন্সিবক্স jQuery v1.9.0 এর সাথে কাজ করে না [f.browser অপরিজ্ঞাত / সম্পত্তি 'msie' পড়তে পারে না]


100

নতুন jQuery v1.9.0 এর সাথে ফেন্সিবক্স বিরতি দেয়।

এটি উভয়কেই প্রভাবিত করে, ফিন্সিবক্স v1.3.4 এবং নীচে - এবং - v2.1.3 এবং নীচে।

ত্রুটিগুলি দেখানো হয়েছে:

v1.3.4:

Timestamp: 15/01/2013 10:03:28 AM
Error: TypeError: b.browser is undefined
Source File: ...fancybox/jquery.fancybox-1.3.4.pack.js
Line: 18

... অন্যান্য ত্রুটি

Uncaught TypeError: Cannot read property 'msie' of undefined jquery.fancybox-1.3.4.pack.js:18
Uncaught TypeError: Object [object Object] has no method 'fancybox'

V2.1.3 এ:

Timestamp: 15/01/2013 10:09:58 AM
Error: TypeError: $.browser is undefined
Source File: h.../fancybox2.1.3/jquery.fancybox.js
Line: 139

আপনি যদি jQuery কল করতে এটি ব্যবহার করছেন:

<script src="http://code.jquery.com/jquery-latest.js"></script>

... আপনার বিদ্যমান ফেন্সিবক্সের যে কোনও বাস্তবায়ন ব্যর্থ হবে !!


27
এবং এজন্য আপনার কখনইjquery-latest.js উত্পাদনে ব্যবহার করা উচিত নয় !
jrummell

1
fancybox 2.1.5 এর সর্বশেষ সংস্করণটি ব্যবহার করুন fancyapps.com/fancybox
মুকেশ

উত্তর:


199

দেখে মনে হচ্ছে এটি এখানে jQuery তে রিপোর্ট করা একটি বাগ উপস্থিত রয়েছে: http://bugs.jquery.com/ticket/13183 যা ফ্যান্সিবক্স স্ক্রিপ্টটি ভেঙে দেয়।

এছাড়াও পরীক্ষা https://github.com/fancyapps/fancyBox/issues/485 আরও রেফারেন্সের জন্য।

কার্যকারণ হিসাবে, jQuery v1.8.3 এ রোলব্যাক করুন যখন হয় jQuery বাগ ঠিক করা হয়েছে বা ফ্যান্সিবক্স প্যাচ করা আছে।


আপডেট (জানুয়ারী 16, 2013): ফ্যান্সিবক্স v2.1.4 প্রকাশিত হয়েছে এবং এখন এটি jQuery v1.9.0 এর সাথে দুর্দান্ত কাজ করে।

ফ্যান্সিবক্স v1.3.4- এর জন্য আপনাকে এখনও jQuery v1.8.3 এ রোলব্যাক করতে হবে বা @ মনুর উত্তর দ্বারা নির্দেশিত মাইগ্রেশন স্ক্রিপ্ট প্রয়োগ করতে হবে ।


আপডেট (জানুয়ারী 17, 2013): ফেন্সিবক্স v1.3.4 এর ব্যবহারকারীদের জন্য কার্যক্রম :

JQuery v1.9.0 এর সাথে কাজ করার জন্য ফ্যান্সিবক্স জেএস ফাইলটি নিম্নে প্যাচ করুন :

  1. একটি পাঠ্য / এইচটিএমএল সম্পাদক দিয়ে jquery.fancybox-1.3.4.js ফাইল (সম্পূর্ণ সংস্করণ, প্যাক সংস্করণ নয় ) খুলুন ।
  2. ২৯ লাইনের আশেপাশে এটি যেখানে বলা হয়েছে তা সন্ধান করুন:

    isIE6 = $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest,

    এবং এটিকে প্রতিস্থাপন করুন ( মার্চ 19, 2013 সম্পাদিত : আরও সঠিক ফিল্টার):

    isIE6 = navigator.userAgent.match(/msie [6]/i) && !window.XMLHttpRequest,

    আপডেট (মার্চ 19, 2013): এছাড়াও প্রায় 615 লাইন $.browser.msieদ্বারা প্রতিস্থাপন করুন navigator.userAgent.match(/msie [6]/i)(এবং / অথবা সমস্ত $.browser.msieদৃষ্টান্ত প্রতিস্থাপন করুন , যদি থাকে), জুমো ধন্যবাদ ... এটিই!

বা এখানে থেকে প্যাচ করা সংস্করণটি ডাউনলোড করুন এখানে (মার্চ 19, 2013 আপডেট হয়েছে ... অতিরিক্ত বন্ধনী বন্ধনী নির্দেশ করার জন্য ফেয়ারলি ধন্যবাদ )

দ্রষ্টব্য : এটি একটি অফিশিয়াল প্যাচ এবং ফ্যান্সিবক্সের লেখক অসমর্থিত, তবে এটি যেমন রয়েছে তেমন কাজ করে। আপনি এটি নিজের ঝুঁকিতে ব্যবহার করতে পারেন;)

Allyচ্ছিকভাবে , আপনি বরং jQuery v1.8.3 এ রোলব্যাক করতে পারেন বা @ মনুর উত্তর দ্বারা নির্দেশিত মাইগ্রেশন স্ক্রিপ্ট প্রয়োগ করতে পারেন ।


1
Ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js এ গুগল অ্যাজাক্স লাইব্রেরি এপিআই সিডিএন থেকে টান দেওয়ার পরে আমার একই সমস্যা হয়েছে । এটি 1.9.0 এর সর্বশেষতম jQuery রিলিজ এবং সমস্যাটি ক্রপ করে। আমরা ভি 1.8.3 রিলিজটি নীচে টেনে এনে স্থানীয় ওয়েব সার্ভারে এটি দেখিয়েছি এবং সবকিছু ঠিক আছে। স্পষ্টতই, আমরা সিডিএন ব্যবহার করতে চাই তবে আমাদের স্লাইডারগুলি ভাঙ্গা এবং মেনুগুলি ভাঙার ব্যয়ে নয়।
জেপিসি

কেন রেজেক্স লেখা হয় /msie [6]/i? - চরিত্র শ্রেণী [6]ঠিক সমতূল্য চরিত্র 6 , অর্থাত্ বন্ধনী ছাড়া। এটি কোডের প্রতি খুব বেশি আত্মবিশ্বাসের অনুপ্রেরণা
জাগায় না

1
@ জরাজমএসিএকফোহগ: আমার ধারণা, কারণ আমি সাধারণত to থেকে ৮ পর্যন্ত আইই সংস্করণগুলি বৈধতা দিয়েছি [6-8]এবং এই ক্ষেত্রে এটি ঠিক যেমন চলেছে [6], শেষে কেবল একটি বাক্য গঠন কনভেনশন। যাইহোক, যদি তারা "একেবারে সমতুল্য" হয়, তবে কীভাবে কোডের আত্মবিশ্বাসকে এটি প্রভাবিত করে?!?! যদি বন্ধনীর সাথে বা ছাড়াই ফলাফলটি অন্যরকম হয় এবং এটি বিভ্রান্তির জায়গা করে তোলে, তবে আমি আপনার সাথে একমত হব, অন্যথায় আমি আপনার "... আত্মবিশ্বাসকে অনুপ্রাণিত করি না ..." মন্তব্যটি একেবারেই গঠনমূলক নয়। আমি বরং আপনার নিজের "আত্মবিশ্বাস-অনুপ্রেরণামূলক" উত্তর পোস্ট করতে উত্সাহিত করব।
জেএফকে

1
এটি দ্বিতীয়বারের মতো ফ্যান্সিবক্স
এন্ডারস

1
@ বাসজিরো: এগুলি সম্পূর্ণ আলাদা বিষয়। আপনি যেগুলির চেক গ্রুপ google.com/forum/#!topic/fancybox/-re22BoXOzM বর্ণনা করেছেন তার জন্য যদি এটি সহায়তা করে
JFK

28

হাই এটি jQuery এর নতুন সংস্করণ => 1.9.0 এর কারণে

আপনি আপডেটটি চেক করতে পারেন: http://blog.jquery.com/2013/01/15/jquery-1-9-final-jquery-2-0-beta-migrate-final-released/

jQuery.Browser হ্রাস করা হয়েছে। আপনি মাইগ্রেশন স্ক্রিপ্ট যুক্ত করে সর্বশেষ সংস্করণটি রাখতে পারেন: http://code.jquery.com/jquery-migrate-1.0.0.js

প্রতিস্থাপন:

<script src="http://code.jquery.com/jquery-latest.js"></script>

দ্বারা :

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.0.0.js"></script>

আপনার পৃষ্ঠায় এবং এর কাজ করে।


+1 আকর্ষণীয়। যে কোনও ক্ষেত্রে আমাদের সকলকে হয় রোলব্যাক সংস্করণ করতে আমাদের সিস্টেমগুলি সম্পাদনা করতে হবে বা লিগ্যাসি কোডের জন্য প্যাচ প্রয়োগ করতে হবে।
জেএফকে

প্যাচ প্রয়োগ (jquery- মাইগ্রেট) fancybox-1.3.4, jquery-1.11.3 এবং jquery- মাইগ্রেট -১.২.১ দিয়ে এই সমস্যাটি সমাধান করতে সহায়তা করে না ... আপগ্রেড করার প্রয়োজন ছাড়াই কি এর কোনও প্যাচিং সমাধান রয়েছে? নন-ফ্রি ফিন্সিবক্স 2 এ?
বাসজিরো

19

গ্লোবাল ইভেন্টগুলিও হ্রাস করা হয়।

এখানে একটি প্যাচ রয়েছে যা ব্রাউজার এবং ইভেন্টের সমস্যাগুলি স্থির করে:

--- jquery.fancybox-1.3.4.js.orig   2010-11-11 23:31:54.000000000 +0100
+++ jquery.fancybox-1.3.4.js    2013-03-22 23:25:29.996796800 +0100
@@ -26,7 +26,9 @@

        titleHeight = 0, titleStr = '', start_pos, final_pos, busy = false, fx = $.extend($('<div/>')[0], { prop: 0 }),

-       isIE6 = $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest,
+       isIE = !+"\v1",
+       
+       isIE6 = isIE && window.XMLHttpRequest === undefined,

        /*
         * Private methods 
@@ -322,7 +324,7 @@
            loading.hide();

            if (wrap.is(":visible") && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) {
-               $.event.trigger('fancybox-cancel');
+               $('.fancybox-inline-tmp').trigger('fancybox-cancel');

                busy = false;
                return;
@@ -389,7 +391,7 @@
                        content.html( tmp.contents() ).fadeTo(currentOpts.changeFade, 1, _finish);
                    };

-                   $.event.trigger('fancybox-change');
+                   $('.fancybox-inline-tmp').trigger('fancybox-change');

                    content
                        .empty()
@@ -612,7 +614,7 @@
            }

            if (currentOpts.type == 'iframe') {
-               $('<iframe id="fancybox-frame" name="fancybox-frame' + new Date().getTime() + '" frameborder="0" hspace="0" ' + ($.browser.msie ? 'allowtransparency="true""' : '') + ' scrolling="' + selectedOpts.scrolling + '" src="' + currentOpts.href + '"></iframe>').appendTo(content);
+               $('<iframe id="fancybox-frame" name="fancybox-frame' + new Date().getTime() + '" frameborder="0" hspace="0" ' + (isIE ? 'allowtransparency="true""' : '') + ' scrolling="' + selectedOpts.scrolling + '" src="' + currentOpts.href + '"></iframe>').appendTo(content);
            }

            wrap.show();
@@ -912,7 +914,7 @@

        busy = true;

-       $.event.trigger('fancybox-cancel');
+       $('.fancybox-inline-tmp').trigger('fancybox-cancel');

        _abort();

@@ -957,7 +959,7 @@
            title.empty().hide();
            wrap.hide();

-           $.event.trigger('fancybox-cleanup');
+           $('.fancybox-inline-tmp, select:not(#fancybox-tmp select)').trigger('fancybox-cleanup');

            content.empty();

4
জেএফকে-র উত্তর থেকে প্যাচিংয়ের নির্দেশাবলীর সাথে আমি যখনই দ্বিতীয়বার একটি ইনলাইন বাক্স খোলার চেষ্টা করছিলাম তখনও আমার সমস্যা ছিল, "সর্বদা ত্রুটি বার্তাটি দেখায়" অনুরোধ করা সামগ্রীটি লোড করা যায় না। দয়া করে পরে আবার চেষ্টা করুন। " সামগ্রীর পরিবর্তে, এটি প্রথম প্রয়াসে সঠিকভাবে প্রদর্শিত হয়েছিল। আপনার (এত স্পষ্ট নয়) অতিরিক্ত প্যাচগুলি ব্যবহার করে এটি শেষ পর্যন্ত কাজ করে।
গুরকান পাপস্ট

1
এই সমাধানটি কেবল jQuery 1.10.2 দিয়ে চেষ্টা করে দেখে মনে হচ্ছে এটি কাজ করে। যদিও আমিও একমত যে এই উত্তরে "প্যাচ" বোঝা সুস্পষ্ট নয়।
Daze থেকে

এটি যে কোনও লোকের জন্য জ্যাকুয়ের নতুন সংস্করণ প্রয়োজন ফেন্সিবক্সের পুরাতন সংস্করণে আটকে আছে তার পক্ষে দুর্দান্ত সমাধান। কিছু খুব বিভ্রান্তিকর বাগগুলি স্থির করেছিলাম যার মধ্যে আমি প্রবেশ করছিলাম।
গ্লেনাট্রন

4
কারও যদি প্যাচ প্রয়োগ করতে সমস্যা হয় তবে সম্পাদনাগুলি সহ ফাইলটি এখানে রয়েছে: পেস্টবিন.
com/

4

যদি এখনও কাউকে jQuery 3.0+ এর সাথে উত্তরাধিকারের ফেন্সিবক্সকে সমর্থন করতে হয় তবে আপনাকে আরও কিছু পরিবর্তন করতে হবে:

.unbind () অবমূল্যায়িত

সকল উদাহরণ প্রতিস্থাপন .unbindসঙ্গে.off

.removeAttribute () কোনও ফাংশন নয়

.removeAttr()পরিবর্তে jQuery এর ব্যবহার করতে 580-581 লাইন পরিবর্তন করুন:

পুরানো কোড:

580: content[0].style.removeAttribute('filter');
581: wrap[0].style.removeAttribute('filter');

নতুন কোড:

580: content.removeAttr('filter');
581: wrap.removeAttr('filter');

এটি উল্লিখিত অন্যান্য প্যাচের সাথে মিলিত হয়ে আমার সামঞ্জস্যের সমস্যার সমাধান করেছে।


আপনি কিভাবে এই বিবৃতি ঠিক করবেন? b.showNavArrows? ((b.cyclic && 1 <hleleth || 0! == s)) && y.show (), (b.cyclic && 1 <h.leight || s! = h.leight-1) && z.show ( )) :( y.hide (), z.hide ())}, এম () {a.support.opacity || (p.get (0) .style.removeAttribute ( "ফিল্টার"), F = ফাংশন। (0) .style.removeAttribute ("ফিল্টার")) পান
এক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.