Ticket #6791: test_TemplatedInIEPopup.html

File test_TemplatedInIEPopup.html, 3.4 kB (added by bill, 8 months ago)

put in dijit/tests directory

Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html>
3        <head>
4                <title>Templated in IE Popup Test</title>
5                <style>
6                body{
7                font-family:Arial, Helvetica, sans-serif;
8                font-size:12px;
9                }
10                </style>
11                <script type="text/javascript" 
12                        src="../../dojo/dojo.js" 
13                        debugAtAllCosts="false"
14                        djConfig="isDebug:true, popup:false, parseOnLoad:false">
15                </script>
16                <script type="text/javascript">
17
18        dojo.require("dijit._Widget");
19        dojo.require("dijit._Templated");
20        dojo.require("dojo.parser");
21       
22        var w;
23        var popup;
24        var widgetClass;
25        var popwin;
26        var globalDocument;
27        var mainwin = this;
28       
29       
30        onPopClose = function(){
31                console.log("setting context back to main window...");
32                dojo.setContext(dojo.global, globalDocument);
33                console.log("Now building the wdiget in the main window...");
34                var div = dojo.doc.createElement("div");
35                        dojo.byId("main").appendChild(div);
36                        new widgetClass({}, div);
37                console.log("There should now be two widgets at the top of the page.");
38        }
39        onPopLoad = function(){
40                        popwin.onunload = onPopClose;
41                       
42                        console.log("popwin:", popwin);
43                        console.log("popwin.onunload :", popwin.onunload );
44                       
45                        globalDocument = dojo.doc;
46                        dojo.setContext(dojo.global, popwin.document);
47                       
48                        console.log("rendering one widget in popup...");
49                       
50                        var div = dojo.doc.createElement("div");
51                        dojo.byId("main").appendChild(div);
52                        new widgetClass({}, div);
53                       
54                        console.log("The widget should have appeared in the popup window.");
55                       
56                        onPopClose()
57                }
58               
59       
60       
61                openPopup = function(){
62                        popup = window.open ('',"mywin","width=240,height=180");
63                        var doc=popup.document;
64                       
65                        var newbcolor = '#FFFFFF';
66                        var newfcolor = '$FF0000';
67                        var word = "";
68                        var HTMLstring= '<HTML><HEAD><TITLE>IE Cross Window</TITLE></HEAD>\n' +
69                                                        '<BODY id="popup" bgColor="'+newbcolor+'" onload = function(){popup.opener.onPopLoad();}>\n'+
70                                                        '<div><div id="main"></div></div>\n'+
71                                                        '</BODY></HTML>';
72
73debugger;
74                        doc.write(HTMLstring);
75                        doc.close();
76                        popup.console = window.console;
77                       
78                       
79                        // The onload event for IE is written into the above body tag.
80                        // This is the onload for Firefox
81                        if(dojo.isFF){
82                                popup.onload = onPopLoad
83                        }else{
84                                setTimeout(function(){
85                                        onPopLoad()
86                                }, 200);
87                        }
88                       
89                       
90                        return popup;
91                }
92               
93               
94       
95                speedTest = function(){
96                        console.log("Speed Test");
97                                               
98                        var start = new Date();
99                        var amt = 1000;
100                       
101                        var div = dojo.doc.createElement("div");
102                        dojo.byId("main").appendChild(div);
103                       
104                        for(var i =0; i<amt; i++){
105                                new widgetClass({}, div);
106                        }
107                        console.log("Time to render ", amt, " widgets:",  (new Date() - start) );
108                       
109                       
110                               
111                }
112                        dojo.addOnLoad(function(){
113                               
114                               
115                                //      After the context is set, Dojo loses track of widget namespacing.
116                                //      I'm not sure why this is, it should probably be looked into.
117                                //      Consequently, we have to grab the object before setContext().
118                                widgetClass = dojo.declare(
119                                        "Simple",
120                                        [dijit._Widget, dijit._Templated], {
121                                                templateString: '<div> - Widget created -</div>'
122                                        }
123                                );
124                               
125                                speedTest();
126                               
127                                // comment this out when testing current, unpatchd version:
128                                console.log("Opening popup window...");
129                                setTimeout(function(){
130                                popwin = openPopup();
131                                }, 0);
132                               
133                                //
134                        });
135                </script>
136        </head>
137        <body id="mainpage">
138                <div id="main"></div>
139        <div>
140        <h2>Fix for cross window widget building in IE</h2>
141         </div>
142        </body>
143</html>