2013-07-04 4 views
1

Я искал исправления/решения для этого и нашел эту тему: http://highslide.com/forum/viewtopic.php?t=3030Highslide, Авто следовать прокручивать

function fixElement(el) { 
    var stl = el.style; 
    stl.position = 'fixed'; 
    stl.top = (parseInt(stl.top) - hs.page.scrollTop) +'px'; 
    stl.left = (parseInt(stl.left) - hs.page.scrollLeft) +'px'; 
} 
function unfixElement(el) { 
    var stl = el.style; 
    stl.position = 'absolute'; 
    stl.top = (parseInt(stl.top) + hs.page.scrollTop) +'px'; 
    stl.left = (parseInt(stl.left) + hs.page.scrollLeft) +'px'; 
} 

if (!hs.ie || hs.ieVersion() > 6) { 
    hs.Expander.prototype.onAfterExpand = function() { 
     fixElement (this.wrapper); 
     if (this.outline) fixElement(this.outline.table); 
    }; 

    hs.Expander.prototype.onBeforeClose = function() { 
     unfixElement (this.wrapper); 
     if (this.outline) unfixElement(this.outline.table); 
    }; 
} 

Есть небольшой хак на тему форума, но хак не работает на любом Интернет Проводник, который я пробовал (IE7, IE8 и IE9).

У кого-нибудь есть «исправление» на хаке, чтобы заставить его работать с IE?

Я думаю, что это что-то связанное с этой части кода, это условие: (! Hs.ie || hs.ieVersion()> 6)

если

я снял, и она работала, но возможно, этот код можно было бы изменить.

спасибо.

+0

Этот сайт вы предоставили отлично работает в IE 8.0.6001 –

+0

К сожалению, я написал много, вы не поняли. Удалена ссылка. Дело в том, что этот хак должен заставить Highslide оставаться застрявшим, а не двигаться, следуя свитке. Спасибо, – saulob

+0

Не могли бы вы представить пример на вашем сайте с этой проблемой? –

ответ

2

Приведенный ниже код - это то, что вам нужно. Живая демонстрация: http://www.highslide.com/studies/position-fixed.html
Примечание: требует Highslide-full.js

// Highslide fixed popup mod. Requires the "Events" component. 
    if (!hs.ie || hs.uaVersion > 6) hs.extend (hs.Expander.prototype, { 
     fix: function(on) { 
     var sign = on ? -1 : 1, 
      stl = this.wrapper.style; 

     if (!on) hs.getPageSize(); // recalculate scroll positions 


     hs.setStyles (this.wrapper, { 
      position: on ? 'fixed' : 'absolute', 
      zoom: 1, // IE7 hasLayout bug, 
      left: (parseInt(stl.left) + sign * hs.page.scrollLeft) +'px', 
      top: (parseInt(stl.top) + sign * hs.page.scrollTop) +'px' 
     }); 

     if (this.outline) { 
      stl = this.outline.table.style; 
      hs.setStyles (this.outline.table, { 
      position: on ? 'fixed' : 'absolute', 
      zoom: 1, // IE7 hasLayout bug, 
      left: (parseInt(stl.left) + sign * hs.page.scrollLeft) +'px', 
      top: (parseInt(stl.top) + sign * hs.page.scrollTop) +'px' 
      }); 

     } 
     this.fixed = on; // flag for use on dragging 
     }, 
     onAfterExpand: function() { 
      this.fix(true); // fix the popup to viewport coordinates 
     }, 

     onBeforeClose: function() { 
     this.fix(false); // unfix to get the animation right 
     }, 

     onDrop: function() { 
      this.fix(true); // fix it again after dragging 
     }, 

     onDrag: function(sender, args) { 
     //if (this.fixed) { // only unfix it on the first drag event 
      this.fix(true); 
     //} 
     } 

    }); 
+0

Большое спасибо. Работала отлично во всех браузерах, что я Chrome, Firefox, Safari и IE7, IE8 и IE9. :) Спасибо – saulob

+0

@RoadRash. В этом коде есть ошибка. Попытайтесь перетащить, когда прокрутка страницы не полностью вверх, а перетаскиваемый элемент будет прыгать во время перетаскивания. Также воспроизводится в демонстрационной ссылке, которую вы предоставили. –

 Смежные вопросы

  • Нет связанных вопросов^_^