كيفية ريفاكتور من استخدام نافذة.فتح(...) إلى غير مزعجة مشروط dhtml النافذة ؟
-
04-07-2019 - |
سؤال
لدي وظيفة التي تطلق نافذة جافا سكريبت مثل هذا
function genericPop(strLink, strName, iWidth, iHeight) {
var parameterList = "location=0,directories=0,status=0,menubar=0,resizable=no, scrollbars=no,toolbar=0,maximize=0,width=" + iWidth + ", height=" + iHeight;
var new_window="";
new_window = open(strLink, strName, parameterList);
window.self.name = "main";
new_window.moveTo(((screen.availWidth/2)-(iWidth/2)),((screen.availHeight/2)-(iHeight/2)));
new_window.focus();
}
يتم استدعاء هذه الدالة حوالي 52 مرات من أماكن مختلفة في تطبيق ويب.
أريد أن إعادة العامل هذا الرمز إلى استخدام DHTML مشروط نافذة منبثقة.التغيير يجب أن تكون مزعجة ممكن.
للحفاظ على هذا الحل على قدم المساواة مع الحل القديم, أعتقد سوف تحتاج أيضا إلى القيام بما يلي
- تقدم مؤشر إلى "إغلاق" النافذة.
- ضمان النافذة لا يمكن نقلها و وضعه في وسط الشاشة.
- طمس الخلفية كخيار.
اعتقد هذا الحل هو الأقرب إلى ما أريد, ولكن أنا لا يمكن أن نفهم كيفية إدراج ذلك.
تحرير:بضع كنت قد أعطيت لي قيادة جيدة.شكرا لك.ولكن اسمحوا لي أن إعادة الدولة مشكلتي هنا.أنا إعادة العوملة التعليمات البرمجية الموجودة.يجب تجنب أي تغيير الحاضر HTML أو CSS.من الناحية المثالية أود أن تحقيق هذا الغرض عن طريق الحفاظ على وظيفة التوقيع على genericPop(...) نفسه أيضا.
المحلول
هنا الحل باستخدام مسج و مسج UI المكتبات.API الخاص بك هو لم يتغير , لكن المعلمة 'اسم' هو تجاهل.يمكنني استخدام iframe
لتحميل المحتوى من معين strLink
ثم عرض أن iframe
طفلة ولدت div
, والتي يتم بعد ذلك تحويلها إلى مشروط المنبثقة باستخدام مسج:
function genericPop(strLink, strName, iWidth, iHeight) {
var dialog = $('#dialog');
if (dialog.length > 0) {
dialog.parents('div.ui-dialog').eq(0).remove();
}
dialog = $(document.createElement('div'))
.attr('id', 'dialog')
.css('display', 'none')
.appendTo('body');
$(document.createElement('iframe'))
.attr('src', strLink)
.css('width', '100%')
.css('height', '100%')
.appendTo(dialog);
dialog.dialog({
draggable: false,
modal: true,
width: iWidth,
height: iHeight,
title: strName,
overlay: {
opacity: 0.5,
background: "black"
}
});
dialog.css('display', 'block');
}
// example of use
$(document).ready(function() {
$('#google').click(function() {
genericPop('http://www.google.com/', 'Google', 640, 480);
return false;
});
$('#yahoo').click(function() {
genericPop('http://www.yahoo.com/', 'Yahoo', 640, 480);
return false;
});
});
نصائح أخرى
أنا استخدم هذا الحوار رمز إلى حد كبير نفس الشيء.
إذا كنت أتذكر بشكل صحيح تطبيق الافتراضي لا يدعم تغيير حجم مربع الحوار.إذا كنت غير قادر على جعل مع واحد فقط الحجم يمكنك تعديل أو كود css لعرض متعددة الاعراض.
الاستخدام السهل:
showDialog('title','content (can be html if encoded)','dialog_style/*4 predefined styles to choose from*/');
تعديل شبيبة لدعم العديد من الاعراض:
إضافة العرض و الارتفاع سمات لإظهار مربع الحوار وظيفة مجموعة منهم إلى الحوار و الحوار-عناصر المحتوى على الخط 68
محاولة التحكم.نافذة, مما يتطلب النموذج
هنا هو كيف يمكنني استخدامه:
<a href="/messages/new" class="popup_window">New Message</a>
و في ملف جافا سكريبت:
$(document).observe("dom:loaded", function() {
$$("a.popup_window").each(function(element) {
new Control.Modal(element, { overlayOpacity: 0.75,
className: 'modal',
method: 'get',
position: 'center' });
});
});
الآن إذا كنت ترغب في إغلاق حاليا المنبثقة القيام به:
Control.Modal.current.close()