سؤال

أحاول إغلاق صندوق فاخر من داخل iframe، ولكن parent.$ دائما undefinedوبعد هذا هو iframe javascript:

 <script type='text/javascript' 
  src='http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js'>
 </script>
 <script type="text/javascript">
 jQuery(document).ready(function($){
     (function($) {
         $.fn.closeFancyBox = function() {
             $(this).click(function() {
                 parent.$.fancybox.close();
             });
         };
      })(jQuery);
      $('#cancel').closeFancyBox();
      });
 });
 </script>

استبدال parent.$.fancybox.close(); مع alert('clicked'); يعمل بشكل جيد فقط. أنا لا أفهم لماذا parent.$ يكون undefined عندما يكون iframe في نفس المجال.

أنا أستخدم WordPress 2.9.1، مع صندوق Fancy ل WordPress Plugin.

  • الصفحة الرئيسية: //server.local/web/test/index.php
  • صفحة iframe: //server.local/web/test/wp-content/plugins/wp-test/test.htm

الأول من هذه URL هي الصفحة الرئيسية، والثاني هو صفحة IFRAME؛ server.local هو خادم اختبار منزلي.

أيه أفكار؟ يمكنني pastebin المصدر بأكمله إذا كان سيكون مفيدا.

هل كانت مفيدة؟

المحلول 8

قضيت بضع ساعات في محاولة تصحيح هذا وحصلت على أي مكان. لذلك قمت بتطفيق "Fancybox" إلى البرنامج المساعد WordPress مع أحدث إصدار من FancyBox، وتم إصلاحه. حقا يجب أن جربت ذلك في وقت سابق.

بعد أن أمضيت بعض الوقت مع WordPress وعلى الإضافات المختلفة، أوصي بالاتصال بالأشياء التي تعتمد يدويا على الإضافات. إنه يضيف فقط طبقة أخرى من التعقيد، إذا كنت تعرف ما تفعله، فلا يحتاج إلى أن يكون هناك.

بفضل دوغ للإشارة إلى بناء الجملة المناسب ل iframe إلى JQuery Window Worder في WordPress.

نصائح أخرى

غير محدد لأن وورد يعمل jquery في noConflict الوضع. استخدم هذا بدلا من ذلك:

parent.jQuery.fancybox.close();

noConflict الوضع يعني $ لا متساوي مسج. عليك استخدام صراحة jQuery للوصول إلى ما يمكنك الوصول إليه عادة $.

إجابتي لا ترتبط ب WordPress، ولكن واحد ل SoanceBox بشكل عام.

في iframe، إذا قمت بتضمين البرنامج النصي الرئيسي في المسج (JQuery-1.5.2.min.js)، فسوف يتعارض مع واحد على الصفحة الرئيسية، و الوالد. $. لن تعمل في هذه الحالة.

الأشياء المسجلة الأخرى ذات الصلة (مثل: ستعمل علامات التبويب) داخل iFrame. وبالتالي، لن يحدث ذلك لمبرمج المبتدئ أن البرنامج النصي المسج الثاني داخل iFrame هو الشرير.

أي اختلافات من Parent.FancyBox.Close () لم تنجح بالنسبة لي، يجب أن تكون بعض الصراع في Lib.

فيما يلي الحلال الخاص بي لأحدث SOUNCYBOX، يجب عليك استخدام خاصية عرض CSS بدلا من طريقة .hide () كما في حالة Fancybox هذه الحالة لن تفتح مرة أخرى.

parent.jQuery('#fancybox-overlay').css('display', 'none');
parent.jQuery('#fancybox-wrap').css('display', 'none');

توجب علي فعل هذا:

window.top.window. $. fancybox.close ()؛

حصلت على خطأ نوع من قبل.

<a href="javascript:parent.jQuery.fn.fancybox.close();" >

شكرا على هذا المنشور، فهو فعلا تقشدني قليلا ... أشعر بالسوء لأنه استغرق الأمر مني بضع دقائق فقط وأنا أعرف كم

لم تنجح أي من الاقتراحات بالنسبة لي. اضطررت إلى العمل حولها باستخدام التعليمات البرمجية التالية. قد يكون أحدث إصدار يدعم الوالدين.jquery.fancybox.close ()؛ النهج، لكن الإصدارات القديمة لا تعمل مع ذلك.

للمواقع الموجودة مع الإصدارات القديمة من الإضافات / مسج، جرب هذا

function close_window()
{
 $("#fancy_outer",window.parent.document).hide();
 $("#fancy_overlay",window.parent.document).hide();
 //window.top.window.$.fancybox.close(); this also does not work :(
}

يمكنك إعلان واستخدام الوظيفة close_window داخل محتوى iframe.

كان لدي نفس المشكلة ولاحظت أنني لا أستخدم

type:'iframe'

عند استدعاء FancyBox، حل مشكلتي

مرحبا، أي شخص يواجه مشكلة في إغلاق مربع Fancy Iframe باستخدام تثبيت يدوي للمربع الهوى في WordPress 3.0:

استخدم هذا الرابط في iFrame الخاص بك:

<a href="#" onClick="parent.jQuery.fancybox.close();" title="Close window">close fancybox</a>

إنها تعمل :)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top