Highslide不跟随页面滚动

时间:2015-02-23 13:40:13

标签: highslide

我有一个在iframe中的父页面。我想在父页面上跟随滚动调用highslide。

我尝试了代码:Highslide, Auto follow scroll

当父页面不在iframe中时,它可以正常工作。 但是当iframe中的父页面时,Highslide无法自动跟随滚动。

请帮助解决这个问题

1 个答案:

答案 0 :(得分:2)

将Highslide固定弹出模式(http://www.highslide.com/studies/position-fixed.html)的脚本放在父页面中,并使用highslide-full.js而不是highslide-with-gallery.js / highslide-with-html.js

演示页:http://roadrash.no/hs-support/inside-iframe-fixed-mod.html

// 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);
        //}
      }

    });