Skip navigation.

Multipopup UserJS

Multipopup 3.06 "year after" update

Thanks to fearphage for reporting bug of duplicated namespace declaration in default stylesheet. It caused a flood of error messages in Opera's error console when not using any external skin.

Download: Multipopup 3.06

Multipopup 3.05 post Kestrel update

Two bugs squashed.

  • Fixed imgPreview plugin (thanks C.O.D. for reporting)
  • Fixed problems with some MS sites (they stupidly override native selectNodes/selectSingleNode methods in their Atlas lib)
    Ideally you should also update external preferences for this fix to be complete but it's not absolutely necessary.

I imagine that some nifty features of Multipopup are not known to most people. This is why I want to remind you how imgPreview works.
If you stumble upon a link that points directly to an image, you can hover over it and hold control key to show it's preview:
preview.png

Download: Multipopup 3.05

Multipopup 3.04 (updated for Kestrel alpha)

, ,

Bugfix release.

Stoen noticed problem of double firing DOMContentLoaded listener (for window and document) in Opera 9.50 - this is fixed.
Also every skin was updated to use pre-wrap instead of -pre-wrap for white-space property as it's officially supported now.

Download: Multipopup 3.04

Multipopup 3.03

,

Slow times for Multipopup, but how we can improve something which is almost perfect. Just kidding.

From the changelog:
  • a lot of speed optimisations
  • fixed inline error in niagara userjs skin (just for the sake of clean message console)
  • fixed embedded plugins not working if external plugins weren't used
  • fixed rare case when multipopup could delete element with action attribute on hover (serious problem but hopefully didn't affected anyone besides me)


Download: Multipopup 3.03

Some changes to external preferences required us to up it to a new version. Thus you will have to get new version and tweak it to your likings once again. Older version will be ignored.

Multipopup 3.02

This update mainly fixes problems introduced by one of the recent weekly builds.

Almost full changelog:
  • changed when elements are appended to prevent bug in Opera weekly build
  • updated line splitting algorithm
  • updated forum attachments check for imgPreview plugin (not sure if this still works as it was made some months ago :wink: )
  • updated mpopDelete to allow editing of the selector and used SNAPSHOT types so you can, for example, manually specify columns in tables.
  • added vista skin
  • updated multipopup_plugins.js styling to look nice with vista skin


Download: Multipopup 3.02

Popup in Vista style

,

I've prepared some new skin for multipopup. It's called Vista for some reason and it's glassy.

Preview:

Grab it here:
multipopupskin_vista.zip
This is a port of a skin (aero vista by zimaq) made for polish instant messenger client - Konnekt

IDN Spoofing

Some of you may have seen this thread on the forums which links to this page that demonstrates the problem

For Multipopup users you can fix this problem, or atleast follow whatever Opera is doing internally, by changing your preferences, either by modifying the default preferences or in the seperate preferences file (recommended).

Add the following code before "lastPrefsItem:true" for the href popup item
  isPlugin: true,
  embeddedPlugin: {
    id:           'href',
    description:  'Alternate method for displaying the address of a link in order to prevent IDN spoofing',
    pluginprotocolversion: 304,
    index: mpUSRJS.popupItems.length,

    create: function(elem) {
      if( !elem.hasAttribute('href') ) { return null; }
      var host = elem.host, href = elem.href, index = this.index;
      if( host && /(?:(?:^|\.)xn--)|[^\w\-.]/.test(host) ) {
        var pattern = mpUSRJS.popupItems[index].alertPattern;
        mpUSRJS.popupItems[index].alertPattern = /./;
        setTimeout(function(){mpUSRJS.popupItems[index].alertPattern = pattern;},0);
        return href;
      }
      else { return ((href=elem.getAttribute('href'))?href:elem.href); }
    }
  },


So
mPu.popupItems[mPu.popupItems.length] =
{
  name:'href',
  title:'Address:',
  inSecondary: true,
  inheritLevels: 5,
  forceWordWrap: true,
  convertToLink: 1,
  accessKey: 'a',
  alertPattern: /^(\s*javascript\:)/i,
  lastPrefsItem:true
}


would become
mPu.popupItems[mPu.popupItems.length] =
{
  name:'href',
  title:'Address:',
  inSecondary: true,
  inheritLevels: 5,
  forceWordWrap: true,
  convertToLink: 1,
  accessKey: 'a',
  alertPattern: /^(\s*javascript\:)/i,
  isPlugin: true,
  embeddedPlugin: {
    id:           'href',
    description:  'Alternate method for displaying the address of a link in order to prevent IDN spoofing',
    pluginprotocolversion: 304,
    index: mpUSRJS.popupItems.length,

    create: function(elem) {
      if( !elem.hasAttribute('href') ) { return null; }
      var host = elem.host, href = elem.href, index = this.index;
      if( host && /(?:(?:^|\.)xn--)|[^\w\-.]/.test(host) ) {
        var pattern = mpUSRJS.popupItems[index].alertPattern;
        mpUSRJS.popupItems[index].alertPattern = /./;
        setTimeout(function(){mpUSRJS.popupItems[index].alertPattern = pattern;},0);
        return href;
      }
      else { return ((href=elem.getAttribute('href'))?href:elem.href); }
    }
  },
  lastPrefsItem:true
}


This shall eventually become the default method used in Multipopup, but you can make the change yourself to avoid waiting for the next update

Multipopup 3.0 Final

, , ,

Here it is, with some improvements from previous beta and a whole lot improvements from Multipopup 2.

I should probably list all the changes that were made during 3.0 development but the list would be so big, that nobody would read it anyway (not to mention that I am to lazy to do such list).

So just the changes from beta 2:
  • Added new plugin for XPath based removal of elements (Stoen)
    This can be used to permanently kill elements on page, that are hard to kill with "Block Content" or CSS.
  • Attributes are now defined using brace notation (Object literal) which makes it easier to add or configure attributes/plugins.
  • A lot of other fixes and changes that were forgotten...

Download: Multipopup 3.0
Archive updated 1st August 2006

Also presenting a new widget tool that will help configuring attributes that are displayed in multipopup.
Like, if you want to add support for displaying "cite" attribute (used by "blockquote" or "Q" elements), or display value of "onclick" attribute, you can do this easier with this widget.
Download: Multipop Configurator widget

The file is also released on the official Multipopup homepage. The official page will only contain stable releases. For the latest beta's and in-depth information, keep your eye on this blog.

Multipopup 3.0 Beta 2 is here

Almost at the same time as Opera releases it's own beta 2 version, we are kicking out this one right here.
multipopup_v3beta2.zipArchive updated to include Plugins v0.29

Old external preferences and plugins won't work with this version. You'll need to update them.

This update is pretty much Stoens work.

Changes from Beta 1:

  • Added accesskey functionality - You can hover over some element, and if it has an attribute that contains a link, you can navigate to that link easily.

    Requires adding a new shortcut to enter access key mode. The default Opera shortcut is Shift + Esc, a new one (for example g) needs to be defined in the Opera keyboard configuration in order to override access keys defined for page elements.

    This feature may be removed as it is a bit clunky especially given the changes to access key mode in newer Opera builds, let us know what you think.

  • Integrated plugins™ - Plugins are now enabled in the in the same way as attributes and also gain the functionality that applies to attributes.

    If you are familiar with editing External Preferences you can do this by modifying a few arrays in the preferences. If not, we will provide a widget that will enable you to easily add, change or remove attributes and plugins.

    By default, Image Preview plugin is enabled for Secondary View. Just don't forget to drop multipopup_plugins.js in your userjs directory.

Multipopup v3.0 Beta ready for download

Hi all. We are proud to announce the availability of Multipopup 3.0 Beta.

EDIT: Multipopup 3.0 final is released, all 3.0 beta's are obsolete. Please download the latest Multipopup.

multipopup_v3beta.zip

It works most efficient with Opera9, so don't forget the grab the latest beta if you want to use multipopup to the fullest extent.

Things like how to install the files remain the same, I am guessing those interested would mostly are already familiar with Multipopup.

One of the most important changes is plugins, here's a secondary view plugin by DIZ, image-previewer, on a page on Håkon Wium Lie's personals:

It is a plugin to view images (loading the big version in their actual size) so you can preview the big versions of thumbnails without leaving the page.

There are also very powerful plugins called separate plugins, accessible through ctrl+alt+p (edit: and it can be closed by pressing Escape button):


For example, here's the delete plugin in action, it's a plugin that lets you delete elements, you can use it to remove ads, remove things that block the content (possibly because of bad styling):


Plugins are activated through plugin selector, and the elements you hover are highlighted. You then press shift to activate the plugin on that element. Here's the editor plugin, a powerful tool that lets you make changes to your / any page and save it back to the page for seeing the results:

BTW, the above picture is actually meant to be a 10kb png picture, but my.opera kindly turns it into a 33kb jpeg, for no particular reason. I guess this is a counter measure to tackle big images' bandwith problem, gone absolutely wrong :smile:

The plugin model of multipopup is very easy to get accustomed to. Simply check out the pre-configured plugins, you can easily see how to create your own functions for use as plugins. We may do a simple tutorial on making plugins later, but any script programmer would have no problems figuring what to do. To make use of external plugins and preferences, you should all put them in the userjs library, on the same directory level as multipopup.

December 2009
S M T W T F S
November 2009January 2010
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31