بحاجة إلى مساعدة مع مسج/جافا سكريبت نافذة منبثقة النصي - غريب الخطأ في internet explorer

StackOverflow https://stackoverflow.com/questions/507968

سؤال

أنا أحاول بناء مسج النصي التي ستفتح نافذة متصفح جديدة (نافذة منبثقة) على البريد مثل تطبيق (يمكن للمستخدم النقر المزدوج على رسائل وأنها سوف تفتح في نافذة جديدة).

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

لقد كان يعمل في فايرفوكس ، ولكن إنترنت إكسبلورر بإرجاع الخطأ التالي:

Line: 51
Error: The interface is unknown.

ولا سيما يحدث عند المستخدمين قد أغلقت نافذة منبثقة ، ثم انقر نقرا مزدوجا فوق عنصر البريد إلى فتحه مرة أخرى.

بلدي جافا سكريبت/مسج مهارات بدائية في أفضل لذا آمل شخص هنا يمكن أن تساعد بها.هنا هو رمز البرنامج النصي.

(function($)
{
    var _popupTracker = {}
    var _popupCounter = 0;
    $.fn.openPopupWindow = function(options)
    {
        var defaults = {
            height: 600, // sets the height in pixels of the window.
            width: 600, // sets the width in pixels of the window.
            toolbar: 0, // determines whether a toolbar (includes the forward and back buttons) is displayed {1 (YES) or 0 (NO)}.
            scrollbars: 0, // determines whether scrollbars appear on the window {1 (YES) or 0 (NO)}.
            status: 0, // whether a status line appears at the bottom of the window {1 (YES) or 0 (NO)}.
            resizable: 1, // whether the window can be resized {1 (YES) or 0 (NO)}. Can also be overloaded using resizable.
            left: 0, // left position when the window appears.
            top: 0, // top position when the window appears.
            center: 0, // should we center the window? {1 (YES) or 0 (NO)}. overrides top and left
            createnew: 0, // should we create a new window for each occurance {1 (YES) or 0 (NO)}.
            location: 0, // determines whether the address bar is displayed {1 (YES) or 0 (NO)}.
            menubar: 0 // determines whether the menu bar is displayed {1 (YES) or 0 (NO)}.
        };

        var options = $.extend(defaults, options);

        var obj = this;

        // center the window
        if (options.center == 1)
        {
            options.top = (screen.height - (options.height + 110)) / 2;
            options.left = (screen.width - options.width) / 2;
        }

        var parameters = "location=" + options.location +
                         ",menubar=" + options.menubar +
                         ",height=" + options.height +
                         ",width=" + options.width +
                         ",toolbar=" + options.toolbar +
                         ",scrollbars=" + options.scrollbars +
                         ",status=" + options.status +
                         ",resizable=" + options.resizable +
                         ",left=" + options.left +
                         ",screenX=" + options.left +
                         ",top=" + options.top +
                         ",screenY=" + options.top;

        // target url
        var target = obj.attr("href");       

        // test if popup window is already open, if it is, just give it fokus.        
        var popup = _popupTracker[target];
        if (options.createnew == 0 && popup !== undefined && !popup.closed)
        {            
            popup.focus();
        } 
        else
        {
            var name = "PopupWindow" + _popupCounter;
            _popupCounter++;

            // open window
            popup = window.open(target, name, parameters);            
            _popupTracker[target] = popup;
            _popupTracker[target].focus();
        }

        return false;
    };        
})(jQuery);

السطر من التعليمات البرمجية التي تعطي لي خطأ:

if (options.createnew == 0 && popup !== undefined && !popup.closed)

شكرا يا ايجل.

تحديث: تبين أن هذا هو في الواقع IE8 الشيء, على الأقل نسخة في ويندوز 7 بيتا.وضعت صفحة اختبار (http://egil.dk/popuptest/popup-source.htm) ويبدو أن العمل كما هو متوقع من زملائي IE7.جاه الوقت الضائع!

تحديث 2: ربما يجب أن أقول كيفية إعادة إنشاء الخطأ.انتقل إلى http://egil.dk/popuptest/popup-source.htm, انقر على أحد الروابط ، أي"شيء 1" ، بعد المنبثقة انتهاء التحميل, علامة التبويب مرة أخرى إلى الإطار الأصل ، اضغط على نفس الرابط مرة أخرى.هذه المرة نافذة منبثقة فقط سوف تتلقى التركيز مرة أخرى ، وليس تحديث (هذا عمدا و ما أريد).الآن إغلاق نافذة منبثقة ، ثم اضغط على نفس الرابط مرة أخرى.وهذا ينتج خطأ في IE8 beta.في فايرفوكس بشكل صحيح تعيد فتح.

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

المحلول

الشيء الوحيد الذي لاحظته هو أن لديك فاصلة إضافية بعد القوائم في التخلف.بعد إزالة آخر فاصلة لأنها عملت بشكل جيد بالنسبة لي على IE7.ما هو إصدار إذا كان أي مما يتيح لك هذه المشكلة ؟

نصائح أخرى

التالية يبدو أن العمل بالنسبة لي.إذا كان أي شخص يمكن تحسين ذلك ، الرجاء!

في فايرفوكس, المنبثقة يحصل فقط التركيز إذا كان مفتوحا.في IE8 ، "واجهة غير معروف" خطأ القبض المنبثقة هو إغلاق ثم إعادة فتح بدلا من ذلك.في جميع الحالات النافذة.فتح خط الأحمال الحالية 'صفحة' في المنبثقة.

var bigimg;  // set this variable outside the function so the first time 
             // the popup opens, bigimg is a defined variable and the if's don't choke.

function popupbigpic(page) 
  {
  try
    {
    if(window.focus && bigimg) bigimg.focus(); 
    }
  catch(err)
    {
    if(bigimg) bigimg.close();
    }
  bigimg = window.open(page,"popup","width=670,height=665,toolbar=no");
  }

لدي مشكلة مع IE 8 النافذة.فتح لم يكن يعمل ، أنا فقط استبدال اسم نافذة مع null, لدي فكرة من http://msdn.microsoft.com/en-us/library/ms536651.aspx

نافذة.فتح("Sample.htm",null, "height=200,width=400,status=yes,toolbar=no,menubar=no,location=no");

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