Interesting that document.write is still used in the latest ZC 1.5.5e in includes/templates/template_default/common/html_header.php, around lines 123-124
but a Google search for "alternative to document.write" returns umpteen documents stating that document.write is an outdated and even bad way to use it.Code:<script type="text/javascript">window.jQuery || document.write(unescape('%3Cscript type="text/javascript" src="//code.jquery.com/jquery-1.12.0.min.js"%3E%3C/script%3E'));</script> <script type="text/javascript">window.jQuery || document.write(unescape('%3Cscript type="text/javascript" src="<?php echo $template->get_template_dir('.js',DIR_WS_TEMPLATE, $current_page_base,'jscript'); ?>/jquery.min.js"%3E%3C/script%3E'));</script>
Yes. It was still somewhat in vogue when that template was initially created. Are you suggesting it should be ripped out during a "point release" and not wait for a "major version release"?
Keep in mind that the majority of people who have contributed templates or who google for help with pretty much any javascript-driven stuff are gonna find or use outdated methods ... and most won't have a clue how to use many of the so-called "better" methods.
Furthermore, you do realize that the code you're referring to is ONLY a catch-all in case the CORRECT loading of jquery hasn't already happened earlier. Those two script lines should NEVER trigger anything if the template is working as designed out of the box
.
Zen Cart - putting the dream of business ownership within reach of anyone!
Donate to: DrByte directly or to the Zen Cart team as a whole
Remember: Any code suggestions you see here are merely suggestions. You assume full responsibility for your use of any such suggestions, including any impact ANY alterations you make to your site may have on your PCI compliance.
Furthermore, any advice you see here about PCI matters is merely an opinion, and should not be relied upon as "official". Official PCI information should be obtained from the PCI Security Council directly or from one of their authorized Assessors.
Whenever using jQuery 1.12.x or 2.2.x I always advocate to also use jQuery Migrate which helps with backwards capability; ie. JS code that needs an earlier version of jQuery to work properly. It is a shim that is most handy. Save it on your hosting account though as calling it locally is faster.
As you are someone who checks their code beforehand I'm sure your code is not the problem.
Where I found the jQuery Migrate to be very helpful is when old custom code or outdated modules are being used, which can be difficult to find / correct on errors. Not saying that is that case here either but Migrate is now a tool I use without even thinking about it.
Ok, problem solved.
This morning I decided to revive the local clone of this site so I could play with various scenarios including deleting files at will without interupting a live site.
Long story short, on the local clone I had a few more files for Zen Lightbox. Found out that things started to work after deleting ../jscript/jquery-1.12.0.min.js and ../jscript/jquery.min.js. A peek at the source showed the output of ../jscript/jscript_zen_lightbox.php including a call for jquery-1.11.3.min.js - and the lightbulb went off!!! Gotcha, bugger!!
So made all look the same on the live site (deleting and modifying a few files) and bingo, OPC was up and running. As I suspected from the outset, there had to be a clash of some jscripts. This was not the case when that site had OPC 1.2.0 running....
Bookmarks