From a4eab68927c7a214e374d0fdc3407586493e5ca3 Mon Sep 17 00:00:00 2001 From: Lars Jung Date: Tue, 3 Jul 2012 00:47:46 +0200 Subject: [PATCH] Adds check for canvas and fallback to div. --- src/jquery.qrcode.js | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/jquery.qrcode.js b/src/jquery.qrcode.js index 764d820..b14eb7a 100644 --- a/src/jquery.qrcode.js +++ b/src/jquery.qrcode.js @@ -6,10 +6,17 @@ (function ($) { 'use strict'; + // Check if canvas is available in the browser (as Modernizr does) + var canvasAvailable = (function () { + + var elem = document.createElement('canvas'); + return !!(elem.getContext && elem.getContext('2d')); + }()), + // Wrapper for the original QR code generator. - var createQr = function (typeNumber, correctLevel, text) { + createQr = function (typeNumber, correctLevel, text) { - // qrcode is the single public function that will be defined by the `QR Code Generator` + // `qrcode` is the single public function that will be defined by the `QR Code Generator` // at the end of the file. var qr = qrcode(typeNumber, correctLevel); qr.addData(text); @@ -117,6 +124,13 @@ return $div; }, + createHTML = function (options) { + + var settings = $.extend({}, defaults, options); + + return canvasAvailable && settings.render === 'canvas' ? createCanvas(settings) : createDiv(settings); + }, + // Plugin // ====== @@ -145,11 +159,9 @@ // ------------------- $.fn.qrcode = function(options) { - var settings = $.extend({}, defaults, options); - return this.each(function () { - $(this).append(settings.render === 'canvas' ? createCanvas(settings) : createDiv(settings)); + $(this).append(createHTML(options)); }); };