I want to tell about one of the websites I was working on lately. That was a project with a long history. The first time I was involved in autumn of 2012. I added some functionality which was absent since the developer who started the site had left. Also I had to rewrite some parts of the code because of the thing I prefer to call “unscrupulous programming”. What does that mean exactly? It’s pretty easy to explain. My precursor did intentionally write code that wasn’t supposed to work just as client wanted. Instead his programming created problems during usage that were not noticeable by brief look. There were also mischievous tricks preventing compability with other software solutions. That way he hoped client will be forced to seek his services again and again.
Then couple of times I changed some features so website could meet the changing customer’s beliefs on how it should work, look and sound. Diplomatically speaking, not all of those decisions would have found acceptance by most professional designers and web-developers. However if the client is paying then he is right and I don’t argue with that. There were some additional difficulties mainly because of the requirement to keep adding and editing of the content simple. Low-skilled computer user should be able to update information on the site.
After all metamorphosis the final result is quite unusual combination of very different technologies which all work together nonetheless. Site is based on the WordPress CMS using few deep buried features. It uses Flash, JavaScript of course, but the most interesting thing is how pieces of archaic technology connect with modern progressive tools there.
During the work on bringing customer’s vision into reality the biggest difficulty was background music. It was supposed to play smoothly without interruptions while visitor is browsing pages. At first, I tried to make it by placing player in background popup. Not a very delicate decision I must confess. It wasn’t very effective one as well. Browsers are surprisingly effective in blocking popups nowadays. Furthermore the ways of controlling a window from its parent window by JavaScript aren’t cross-browser. It also was too late to rebuilt the whole site to AJAX which allows certain areas of the page to change while others (the one containing player for example) stay still. So, what did I finally choose?
I used frames. Yes, there is no mistake. I really mean those creepy old things that were last time described in HTML 4.01 in previous millennium. Frames took their place among other recognizable features of Web 1.0 era and already became obsolete when I was at school. If you ask search engine about it most likely there will be caution on the first page in the list saying you should restrain from using frames. Surprisingly frames happened to be useful in my situation.
JS works way better on controlling player in near frame than in near window. The problem with frameset structural integrity (normally you can only see correct frameset if you came from the main page of the website) was solved by JS-script which checks environment of the page, and PHP code which generates missing frame on the fly if one was missed. Another classical frames’ problem with displaying correct URL in browser’s address bar was nullified by using of History API, part of HTML5 standart. It’s relatively fresh technology. Some internet browsers just started to support it in last year but History API has already found utilization. You can see it working in russian social network VK for example.
All in all I believe I created rather elegant solution though site looks nothing like a golden medal or trophy you put on the most noticeable place in a room. I learned something new, I got more experience in web-programming. However my personal feelings don’t change the fact it’s just usual official website for small business, highly influenced by customer’s taste, decent at best.
P. S. I must apologize on behalf of all web-developers for sites with such annoying and totally wrong usage of sound. As wage-earners we have to make things we would never do by our own intention (at least I hope so)…