8 var canvas
= document
.createElementNS("http://www.w3.org/1999/xhtml", "canvas");
9 var ctx
= canvas
.getContext("2d");
10 document
.implementation
.createDocument("", "", null).adoptNode(canvas
);
12 try { ctx
.save(); } catch(e
){}
13 try { ctx
.restore(); } catch(e
){}
14 try { ctx
.scale(0,0); } catch(e
){}
15 try { ctx
.rotate(90); } catch(e
){}
16 try { ctx
.translate(1,1); } catch(e
){}
17 try { ctx
.transform(0,100,200,300,10,10); } catch(e
){}
18 try { ctx
.setTransform(0,100,200,300,10,10); } catch(e
){}
20 try { x
= ctx
.globalAlpha
; } catch(e
){}
21 try { ctx
.globalAlpha
= 0.8; } catch(e
){}
22 try { x
= ctx
.globalCompositeOperation
; } catch(e
){}
23 try { ctx
.globalCompositeOperation
= "copy"; } catch(e
){}
24 try { x
= ctx
.strokeStyle
; } catch(e
){}
25 try { ctx
.strokeStyle
= "red"; } catch(e
){}
26 try { x
= ctx
.fillStyle
; } catch(e
){}
27 try { ctx
.fillStyle
= "red"; } catch(e
){}
29 try { ctx
.createLinearGradient(0,100,100,100); } catch(e
){}
30 try { ctx
.createRadialGradient(0,100,100,100,10,10); } catch(e
){}
31 try { ctx
.createPattern(document
.getElementsByTagName('img')[0], "repeat"); } catch(e
){}
33 try { x
= ctx
.lineWidth
; } catch(e
){}
34 try { ctx
.lineWidth
= 2; } catch(e
){}
35 try { x
= ctx
.lineCap
; } catch(e
){}
36 try { ctx
.lineCap
= "round"; } catch(e
){}
37 try { x
= ctx
.lineJoin
; } catch(e
){}
38 try { ctx
.lineJoin
= "bevel"; } catch(e
){}
39 try { x
= ctx
.miterLimit
; } catch(e
){}
40 try { ctx
.miterLimit
= 12; } catch(e
){}
42 try { x
= ctx
.shadowOffsetX
; } catch(e
){}
43 try { ctx
.shadowOffsetX
= 1; } catch(e
){}
44 try { x
= ctx
.shadowOffsetY
; } catch(e
){}
45 try { ctx
.shadowOffsetY
= 1; } catch(e
){}
46 try { x
= ctx
.shadowBlur
; } catch(e
){}
47 try { ctx
.shadowBlur
= 1; } catch(e
){}
48 try { x
= ctx
.shadowColor
; } catch(e
){}
49 try { ctx
.shadowColor
= "red"; } catch(e
){}
51 try { ctx
.clearRect(0,0,100,100); } catch(e
){}
52 try { ctx
.fillRect(0,0,100,100); } catch(e
){}
53 try { ctx
.strokeRect(0,0,100,100); } catch(e
){}
55 try { ctx
.beginPath(); } catch(e
){}
56 try { ctx
.moveTo(1,1); } catch(e
){}
57 try { ctx
.lineTo(10,10); } catch(e
){}
58 try { ctx
.quadraticCurveTo(1,2,3,4); } catch(e
){}
59 try { ctx
.bezierCurveTo(1,2,3,4,5,6); } catch(e
){}
60 try { ctx
.arcTo(1,2,3,4,5); } catch(e
){}
61 try { ctx
.arc(1,2,3,4,5); } catch(e
){}
62 try { ctx
.arc(1,2,3,4,5,true); } catch(e
){}
63 try { ctx
.rect(1,2,3,4); } catch(e
){}
64 try { ctx
.closePath(); } catch(e
){}
66 try { ctx
.fill(); } catch(e
){}
67 try { ctx
.stroke(); } catch(e
){}
68 try { ctx
.clip(); } catch(e
){}
70 try { x
= ctx
.font
; } catch(e
){}
71 try { ctx
.font
= "14px sans-serif"; } catch(e
){}
72 try { x
= ctx
.mozTextStyle
; } catch(e
){}
73 try { ctx
.mozTextStyle
= "14px sans-serif"; } catch(e
){}
74 try { x
= ctx
.textAlign
; } catch(e
){}
75 try { ctx
.textAlign
= "right"; } catch(e
){}
76 try { x
= ctx
.textBaseline
; } catch(e
){}
77 try { ctx
.textBaseline
= "top"; } catch(e
){}
79 try { ctx
.fillText("",0,0); } catch(e
){}
80 try { ctx
.strokeText("",0,0); } catch(e
){}
81 try { ctx
.measureText(""); } catch(e
){}
83 try { ctx
.mozDrawText(""); } catch(e
){}
84 try { ctx
.mozPathText(""); } catch(e
){}
85 try { ctx
.mozTextAlongPath("",true); } catch(e
){}
86 try { ctx
.mozTextAlongPath("",false); } catch(e
){}
88 try { ctx
.drawImage(document
.getElementsByTagName('img')[0], 0, 0); } catch(e
){}
89 try { ctx
.isPointInPath(0, 0); } catch(e
){}
90 try { ctx
.createImageData(); } catch(e
){}
91 try { ctx
.getImageData(); } catch(e
){}
92 try { ctx
.putImageData(); } catch(e
){}
94 try { x
= ctx
.mozImageSmoothingEnabled
; } catch(e
){}
95 try { ctx
.mozImageSmoothingEnabled
= false; } catch(e
){}
96 try { ctx
.mozImageSmoothingEnabled
= true; } catch(e
){}
98 try { ctx
.drawWindow(window
, 0, 0, 0, 0, "red"); } catch(e
){}
103 <body onload=
"boom();"><img width=
"100" height=
"100" src=
"data:image/gif;base64,R0lGODlhAQABAIABAAD/AP///ywAAAAAAQABAAACAkQBADs="></body>