aralejs/qrcode — pull request #2 by NewtonNiu (2013-12-02 01:33:36+00:00)
Title: 优化SVG绘制，支持输出任意大小

通过配置viewbox缩放svg实现支持任意大小的二维码绘制!

我在[Qrcode](https://github.com/NewtonNiu/qrcode/blob/master/src/jquery.qrcode.js)中对IE用了```vml```绘制，也支持任意大小，```table```绘制想到了一个任意大小的方法，但是IE8对```table```的缩放有问题，求破~，下面是代码：

```js
var hasTransform = (function (element){
var props = ['transformProperty', 'WebkitTransform', 'MozTransform', 'OTransform', 'msTransform'];
for (var i in props) if (element.style[ props[i] ] !== undefined) return true;
return false;
}(document.createElement('div')));

// create table
function createTable(qrcode, options){
// qrcode count
var moduleCount = qrcode.getModuleCount(),
zoom = Math.min(options.width / (moduleCount * 10), options.height / (moduleCount * 10)),
table = '

',
backRect = '	';

if (hasTransform) {
table += '-webkit-transform-origin: 0 0;'
+ '-moz-transform-origin: 0 0;'
+ '-ms-transform-origin: 0 0;'
+ '-o-transform-origin: 0 0;'
+ 'transform-origin: 0 0;'
+ '-webkit-transform:scale(' + zoom + ');'
+ '-moz-transform:scale(' + zoom + ');'
+ '-ms-transform:scale(' + zoom + ');'
+ '-o-transform:scale(' + zoom + ');'
+ 'transform:scale(' + zoom + ');">'
} else {
table += 'zoom:' + (zoom) + ';">'
}

// draw qrcode
for (var row = 0; row < moduleCount; row++) {
table += '
';
for (var col = 0; col < moduleCount; col++) {
table += qrcode.isDark(row, col) ? foreRect : backRect;
}
table += '
';
}

table += '

';

return $(table)[0];
}
```