سؤال

أواجه صفحة ويب قائمة على الإطار مع 3 إطارات. Topliner، التنقل على الجانب الأيسر وإطار المحتوى على الجانب الأيمن السفلي.

الآن، أريد أن أظهر قائمة نافذة منبثقة عند النقر فوق المستخدم على إطار المحتوى. نظرا لأن حاوية DIV لا يمكن الخروج من الإطار، كانت فكرتي، وضعت صفحة الإطار بأكملها في iFrame جديد. في تلك الصفحة، يمكن أن يكون لدي IFRAME ثان هو القائمة المنبثقة الخاصة بي.

حتى الآن، أواجه هذا التصميم:

<html> (start-page)
  <iframe  (real content)
    <frameset 
      top-frame
      navigation-frame
      content-frame
    >
  >
  <iframe> (my popup-menu, positioned absolutelly and hidden by default)
</html>

في إطار محتوى الخاص بي، أحصل على "onmouseover" - تحديد موضحة الجسم. يجب أن يفتح هذا الحدث iFrame المنبثقة في موضع الماوس الحالي. والضبط هنا هي مشكلتي: كيفية الحصول على إحداثيات الماوس relatively إلى أعلى الموقع الإلكتروني (الصفحة البدء في مشروعي)؟

حاليا أقوم به هذه الوظيفة المهرية (تعمل في IE فقط، في الوقت الحالي - لكن الحصول عليها في FF & Co لا ينبغي أن تكون المشكلة ...)

function mouseDown(e)
{
  if (window.event.button === 2 || window.event.which === 3) 
  {
    top.popupFrame.style.left = event.screenX + "px";
    top.popupFrame.style.top = event.screenY + "px";
    top.popupFrame.style.display = "";
    return false;
  }    
}

كما ترون، فإن "Event.Screenx" و "Screeny" - المتغيرات ليست متغيرات يمكنني استخدامها، لأنها ليست نسبة إلى الصفحة الرئيسية.

أيه أفكار؟

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

المحلول

إذا كنت تخطط فقط لدعم IE - يمكنك محاولة استخدام إطار مشروط جديد عن طريق الاتصال Window.showmodaldialog. يمكنك وضع النافذة الجديدة في أي مكان على الشاشة.

هناك العديد من العيوب لاستخدام نافذة جديدة بشكل عام وطريقة واحدة في ذلك ...

بالمناسبة - FF 3 وما فوق أيضا يدعم window.showmodaldialog.

نصائح أخرى

تقول إنه تطبيق مؤسسة - هل لديك لدعم جميع المتصفح الرئيسي، أم أنه ما يكفي؟

أنا أسأل هذا لأن أي لديه وظيفة تعمل بالضبط مثل تحتاج:

window.createPopup(...)

http://msdn.microsoft.com/en-us/library/ms536392(vs.85).aspx.

سوف تكون المنبثقة مرئية حتى خارج نافذة المتصفح! :-)

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

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

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

  • الإطارات صعبة أو مستحيلة إشارة مرجعية بشكل صحيح بشكل صحيح نظرا لأن الإطارات عادة ما تكون الصفحة الوحيدة المرئية في العنوان.
  • من السهل جدا الخروج من إطارات عن طريق تحميل رابط في نافذة متصفح جديدة. هذا يعني أن المستخدم قد يفقد التنقل أو تضيع.
  • لا تقلل بأمان على الأجهزة المحمولة والمتصفحات النصية فقط. زائد كبير لتخطيطات CSS هو أنه حتى بدون أي أنماط تحولت، ما زالت قابلة للاستخدام.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top