Files
openlayers/master/examples/test_CrossWindow.html
Éric Lemoine 5d14b9e2d4 Updated
2013-02-20 10:38:25 +01:00

133 lines
3.7 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Templated in IE Popup Test</title>
<style>
body{
font-family:Arial, Helvetica, sans-serif;
font-size:12px;
}
</style>
<script type="text/javascript"
src="../../../dojo/dojo.js"
djConfig="isDebug:true, popup:false, parseOnLoad:false">
</script>
<script type="text/javascript">
dojo.require("dijit._Widget");
dojo.require("dijit._TemplatedMixin");
dojo.require("dojo.parser");
var w;
var popup;
var widgetClass;
var popwin;
var globalDocument;
var mainwin = this;
onPopClose = function(){
console.log("setting context back to main window...");
dojo.setContext(dojo.global, globalDocument);
if(dijit.byId('simple3')){
dijit.byId('simple3').destroy();
}
console.log("Now building the widget in the main window...");
var div = dojo.doc.createElement("div");
dojo.byId("main").appendChild(div);
new widgetClass({id:"simple3"}, div);
console.log("There should now be two widgets at the top of the page.");
};
onPopLoad = function(){
globalDocument = dojo.doc;
dojo.setContext(dojo.global, popwin.document);
if(dijit.byId('simple2')){
dijit.byId('simple2').destroy();
}
console.log("rendering one widget in popup...");
var div = dojo.doc.createElement("div");
dojo.byId("main").appendChild(div);
new widgetClass({id:"simple2"}, div);
console.log("The widget should have appeared in the popup window.");
onPopClose();
};
openPopup = function(){
popup = window.open('', "mywin", "width=240,height=180");
var doc = popup.document;
var newbcolor = '#FFFFFF';
var newfcolor = '$FF0000';
var word = "";
var HTMLstring = '<HTML><HEAD><TITLE>IE Cross Window</TITLE></HEAD>\n' +
'<BODY id="popup" bgColor="' + newbcolor + '">\n' +
'<div><div id="main"></div></div>\n' +
'</BODY></HTML>';
doc.write(HTMLstring);
doc.close();
popup.console = window.console;
// The onload event for IE is written into the above body tag.
// This is the onload for Firefox
if(dojo.isMoz){
popup.onload = onPopLoad;
}else{
setTimeout(function(){
onPopLoad();
}, 200);
}
return popup;
};
speedTest = function(){
console.log("Speed Test");
var start = new Date();
var amt = 1000;
var div = dojo.doc.createElement("div");
dojo.byId("main").appendChild(div);
for(var i = 0; i < amt; i++){
new widgetClass({id:"simple_" + i}, div);
}
console.log("Time to render ", amt, " widgets:", (new Date() - start));
};
dojo.ready(function(){
widgetClass = dojo.declare(
"Simple",
[dijit._Widget, dijit._TemplatedMixin], {
templateString: '<div> Widget created: ${id} </div>'
}
);
speedTest();
});
</script>
</head>
<body id="mainpage">
<h2>Test for cross window widget building</h2>
<p>
This test will create a widget in the main window, then in a popup, then another in the main window.
Tests issues on IE, namely making sure that nodes are created in the right document, see
<a href="http://trac.dojotoolkit.org/ticket/6791">#6791</a>.
</p>
<p>
You must allow popups before running this test.
Check console for results.
</p>
<div id="main"></div>
<iframe name="mywin" src="about:blank"></iframe>
<a id="popupLink" href="nowhere.html" onclick="popwin = openPopup();return false;">run popup test</a>
</body>
</html>