Safari Gets Their Act Together
I've been very nervous about the way the Safari 3.0 version handled DHTML interaction with image
styles, but it looks like everything is going to be okay. The latest version, 3.1.2, seems to have
corrected the matter.
When PopBox expands an image it doesn't actually expand the original thumbnail - it expands a small
version of the large image and hides the thumbnail. This transition is pretty seamless and the effect
is to look like the original image is popping instead of a completely different image. (This is
assuming you're using a separate image for the thumbnail and the large image.)
The hiding of the original image is achieved in script by setting the 'visibility' style of the
image to 'hidden', which works like a charm because it doesn't affect the layout or shift the original
objects around but just neatly makes the image invisible. All browsers completely ignore all events
that occur on an element whose visibility is set to 'hidden'.
Until Safari.
For some unknown reason Safari 3.0 decided that click events on these hidden objects are still valid
events. So what do you think happened when someone clicked on the original hidden image in PopBox?
Chaos my friend. Chaos.
There were a couple of ways to fix it in the code, but none of them were pretty and all were complicated
just to support a browser that has a low percentage usage (2.4% as of this writing).
Now I don't have to fix it because Apple did it for me. Safari now behaves much like the other browsers
and correctly ignores the hidden object events. Thank you.
On a related note I received a few vague bug reports for FireFox 3 beta, but I've not been able
to duplicate any of them in the release version. Since I have a new version of PopBox coming out in the
next week or so I would appreciate receiving any bug reports as soon as possible so I can roll them into
the next version.
New Beginnings
Today is day 2 of my new job. Yes - new job. With who you might ask? C6 Software. I know you've
heard of them - you're reading the blog right now.
For years I've been planning to take the plunge and convert my fledgling consulting practice into a
true software company and this is the first major step. Sure I've been working on it when I could -
a couple of hours in the morning here and there, a late night once in a while, but this is different.
It's major because I cut my consulting in half, working only 20 hours a week for my employer. This
has freed up 20+ hours a week to focus on my business.
Ok, so it's only part time, but now my income depends on it. And that's a heck of a motivating factor.
I have a lot planned for the coming months and I'm happy to report that the work began well yesterday.
I'm a proponent of Getting Things Done
so I spent quite a bit of time yesterday clearing out my inbox and organizing my workspace. There was
quite a bit to do but I'm more productive already.
A few changes were made to the E-Commerce Calculator
in regards to table formatting and Paypal prices. And I finally had a chance to put iPortis on
the grid. Many thanks to Charles out there for being so patient. If you're in the market for an
e-commerce provider check them out!
PopBox is rapidly approaching 10,000 downloads which is pretty exciting.
There is a major update coming very soon that will fix a few nagging issues, and believe it
or not a customer wrote in an excellent solution to make PopBox 100% XHTML compliant and still be
100% backward compatible. I didn't not want to be compliant, I just didn't want to suffer
a 'simplicity' penalty.
There are also a few issues with FireFox 3 and Safari that I'm trying to resolve. I can't make any
promises with Safari though because they've really screwed up DHTML and script interaction. In every
browser except Safari you can't click on an object whose 'style:display' is set to 'none'. Because
Safari allows this it royally screws up Popbox. I hope they've fixed it in the final release.
And of course design is progressing on my commercial application. I've switched tacks here and am
designing an application that I can reasonably write in a couple of months. Although my savings account
will keep my family afloat for a good while I'd rather not tap into it any more than I have to, so
if I can get something in the marketplace in early Fall I'll be much happier.
I might even have time for a longer article or two. Exciting times ahead!
EC Suite Joins The E-Commerce Calculator
I got an email this week from E-Commerce Suite (EC Suite)
introducing themselves and asking for a spot on the
E-Commerce Calculator.
After a quick look at their site I was glad to oblige!
While not the cheapest option for a mISV they definitely have the most features - and
all at the same low price. You can host your web site with a shopping cart, sell your
products with your credit card of choice, include DRM and license keys and they'll even
pay you weekly!
Here's what I wrote on the calculator page about them:
The newest addition to the calculator list is EC Suite. I must say that although they aren't
the least expensive of the group they are competitive if all you need is a payment
processor, but when you need more than that they simply blow the competition away.
So many perks and bonus features are included in the same low rate that they
are a true one-stop-shop for a micro ISV. I think you'll be amazed at all they offer.
If my list weren't alphabetical I'd put them at the top.
If you're looking for, well... everything
in one package then check them out!
A lot of testing and feature requests have gone into this release and I think everyone will
be happy with the results. There are a few bug fixes and a couple of new features that will
probably make my non-English customers happy too. Yes - PopBox has been localized for your language!
Okay - so it was only two text fields, but it needed to be done.
If you use the pbSrcNL attribute then I would definitely get this upgrade as it fixes a major bug
that somehow went unnoticed for months. If you use the roll-over feature you also want to get
this upgrade. If you use landscape pictures you want to get this release. If you use PopBox at
all you want to get this upgrade.
You'll like it. It's better than Cats.
You'll want to use it again and again.
- Added the capability to pop images in a landscape format where the image is automatically
scaled to the height of the browser but will extend beyond the width if necessary
to support wide images (ditto for tall images).
For most customers this is 100% backward compatible,
but if you are using the PopEx method instead of the Pop
method you should take a look at the parameters as they now have extra functionality.
See the function definition for details.
- Fixed a bug that occurred when the pnSrcNL property was set to a relative path
url. If you use the pbSrcNL instead of pbSrc then
you need to get this upgrade.
- Added a work-around for a browser bug where the image would sometimes not revert
on roll-overs when the mouse left the image. This fix requires a few more resources
but is only enabled for the page when you use the onmouseover feature. There is
a global variable, popBoxMouseMoveRevert, that you can set to
false to use the old method instead if you prefer.
- Fixed a bug where the size of the image is incorrectly rendered during a revert
if the command to revert the image is initiated prior to the image popping completely.
This most often showed up on mouseover effects.
- Set the minimum value for the top left corner of the popped image to 0,0 if the
image is dynamically positioned (you pass in null
for the left and top). Most browsers tested had difficulty scrolling to the left
and this will solve that problem.
- The "more" and "less" textual links in the caption are now contained in global
variables to support other languages. Now you can set popBoxCaptionMoreText and
popBoxCaptionLessText to "mehr" and "kleiner" or to whatever you desire - just keep
it short or the length calculations will be off.
As always you can get the latest version from the
product page and I've updated the
documentation page accordingly too. In the following weeks I'll try to get it to print
out correctly for those who don't like to view docs on screen.
I'm also touched by the number of you who have written in wanting to know how to send
me money. Thanks, really. I've placed my official position on that subject in the
FAQ page.
I have a good five days over the Christmas holiday to work on my next project so I hope
to complete enough about it to blog about it here. Stay tuned...
PopBox Supports Links And Scripts In The Caption
Did you know you can place textual links in the pbCaption? This allows you to support things
like "Buy Now!" links and "Add To Cart" links directly in the caption of the image.
It's a bit tricky but works wonderfully. I've written up a sample and added it to the
FAQ.
E-Commerce Fee Calculator Update
I thought it was about time for an E-Commerce Calculator
update since the last check was July 25. Only a few things have changed in the last 3 months.
We saw the demise of two vendors: Digital Candle and Virtually Free. I'm not sure if they just went
out of business or were swallowed up by the Digital River juggernaut, but either way they're not
around anymore.
I don't think anyone will miss Digital Candle, as they didn't really stand out as good or bad and
there are plenty of others to choose, and I'm practically positive that no one will miss Virtually Free as
they were easily the most expensive of the group. Sayonara.
Other than that I did notice this sentence on the Plimus fees page:
If you can find an advertised rate better than ours we will match it or beat it!
I've heard good things about their service, so you might want to call them up and see if they'll
match Google's advertised rates (free). Tell them I sent you and I promise to publish the hate mail.
Frankly, I'd even be impressed if they'll match Google's advertised rates for 2008.
PopBox was recently mentioned in a few blogs that have a higher readership than mine, and
from there it got stumbled, dugg, reddited and delicioused. Is that a word?
The point is that suddenly in the course of 24 hours PopBox went from 10-20 downloads a day
to over 300 downloads a day. While I fully expect this to decrease again it has presented
me with a much larger user base which means more support and more feature requests.
It also means more testing on more diverse systems under more unusual usage patterns. Thus the release
of version 2.4 that includes one new feature and one bug fix:
- Added events that fire before the image
is Popped or Reverted. Now if you have UI elements on the page (such as <select>
drop-downs) that always render on top you can hide them prior to the image Popping
and then make them visible again when the image Reverts.
- Fixed a sizing bug that occurred when multiple identical thumbnail images
(with the same src value) each Popped to different large images.
If neither of these items affect your installation you don't need to update, but 2.4 is 100%
backward compatible with 2.3.
I've also spent a little more time enhancing the Quick
Start and FAQ
page to better explain some of the features and how to accomplish common tasks. One of the biggest
complaints that I read about on one of the blogs was that they wanted to use the "title" attribute
instead of the "pbCaption" for the caption of the image.
Actually the fallback to title if pbCaption doesn't exist was built into the caption capability
from it's initial release in version 2.1, but they're obviously having difficulty finding where
it says that so I added it to the FAQ
page. Check it out!
More fun stuff to come soon!
MS SQL Server Variables in Stored Procedures Have No Scope
I know what you're thinking - yes they do. But really they don't.
"GLOBAL" and "LOCAL" don't complete the picture. A globally scoped variable is accessible from a
stored procedure that is called by the first, and a locally scoped variable is only accessible from
within the same stored procedure. But that's really pretty inadequate.
Can you tell me what the final result of this script will be?
declare @str1 varchar(50)
set @str1 = 'This is a '
declare @strResults varchar(50)
while @str1 <> null
begin
declare @str2 varchar(50)
if @str2 <> null
set @str1 = null
if @str2 = null
set @str2 = 'test.'
set @strResults = @str1 + @str2
end
select @strResults as [Results]
If you said 'This is a test.' then you didn't look very hard.
If you said there would be no result because it would never leave the while loop then you
correctly understand scoping of variables as used in most modern languages today. But you'd still
be wrong.
The correct answer is null.
If you're shaking your head you had the same reaction I did when debugging a production procedure
a couple of weeks ago. The
declare @str2 varchar(50)
only runs the first time through the loop. The
second time it already exists and retains its value of 'test.'
so it sets @str1 to null which ends the loop.
Of course when you add null and 'test.' you get null.
Next time when you think about scoping variables in TSQL remember to declare your variables
outside the loop or explicitly initialize them to the value you want instead of relying on
them to be null. You'll be much happier with the results.
This is just a small release to fix a bug in the PopBar where it wouldn't display if the image id attribute
wasn't set. If you set your id attribute on your images then you wouldn't have experienced this.
I did discover something interesting though that you may want to know about if you do dynamic image
creation in javascript: the variable returned from document.body.getElementsByTagName("img");
is a true pointer and not a copy of the array.
Why does that matter? When I create the PopBars I'm iterating though this array and checking each image
for the PopBar attributes and creating the PopBar magnifying images as an overlay on the original image.
When those overlays are created where do you think they go? Right into the
document.body.getElementsByTagName("img"); array!
So for every image that has a PopBar image another image gets added to the array. That's another image
my loop is querying for PopBar attributes that don't exist. This is just inefficient so I've instead
copied the original array and am now operating on just the copied pointers. As a result the PopBars get
created faster and I'm happier - and so are your visitors.
I really am working on other stuff too - I promise! I've got an article coming out in the next couple of days
with more to come shortly thereafter.
PopBox FAQ is Now Online
I finally got over multiple colds and being really swamped at my day job so I could write up the
Frequently Asked Questions page
for PopBox. It's got quite a few answers to questions I've received about the product.
If you don't see your answer there please feel free to email me
and I'll do my best to respond in a timely manner.
E-Commerce Fee Calculator is Now Dynamic
Over the past month I've received email from Avangate and Plimus requesting that I make changes to
the E-Commerce Fee Calculator to
make it more dynamic.
Many vendors do indeed have different pricing structures and since the calculator is cross-linked now
I've been getting a lot of traffic to it, so it seems only fair that I make it more accurate. So
as of today you can get true accurate pricing from the calculator without having to go to the vendor
web site to make sure the percentages fit for your product.
As an aside it's nice to know that those two vendors have their fingers on the pulse of the mISV
community enough to find my meager web site. That alone makes them worth a look.
This release of PopBox is just a bug fix release that makes it far more stable on most browsers,
especially FireFox/Mozilla. There were a couple of nasty bugs that I didn't catch because my pages
were loading too quickly on my development box and I didn't have time to see the problems of random
clicking prior to completely loading the page.
The biggest bug found was pointed out to me by Richie Hindle of Entrian
Solutions where the image would display if clicked prior to the page completely loading, but then
wouldn't if clicked again after the page finished loading. Now I'd call that a bug!
At least that only affected the 3-4 people out there using FireFox. <duck>Just kidding!</duck>
Big thanks to Richie for going so far as to even create a Flash video of the bug so I could really see
what he was seeing. It made tracking the problem much easier. If he puts that same level of detail into his
other work then I'd say his products and services are certainly worth a look.
Another FireFox/Mozilla bug was found and fixed where the wait image wouldn't display if the image was
clicked prior to completely loading. I detailed this in yesterday's blog.
And in more wait image wierdness it wouldn't disappear if you tried to pop the image multiple times prior
to it completely loading. That's fixed too.
You can always see the full revision history on the
documentation page.
Thanks to all for the support and comments. I have gotten a question or two on my software experiment
starting next week, but I'm not telling anything yet. You'll have to wait. :)
|