1var truealert = window.alert; // we overwrite window.alert sometimes 2 3// Walk up the caller chain and try to find a reference to the Inspector's window 4function doAttack() { 5 var obj = doAttack.caller; 6 for (var i = 0; 7 i < 1000 && (obj.arguments.length == 0 || !obj.arguments[0].target); 8 i++) { 9 obj = obj.caller; 10 } 11 if (i == 1000) return; 12 var win = obj.arguments[0].target.ownerDocument.defaultView; 13 xhr(win); 14} 15 16function xhr(win) { 17 var xhr = new win.XMLHttpRequest(); 18 var url = prompt("Test failed. To prove it, I'm going " + 19 "to make a cross-domain XMLHttpRequest. Where " + 20 "would you like me to send it?\n\nHint: You can " + 21 "also try a file:// URL.", "http://www.example.com/"); 22 xhr.open("GET", url, false); 23 xhr.send(); 24 truealert("Result:\n\n" + xhr.responseText); 25} 26 27function instructions(params) { 28 var str = "<p>This test tries to make a cross-domain XMLHttpRequest to " + 29 "check whether JavaScript object wrappers are working (bug 16837, bug 16011).</p>" + 30 "<p>View this page from an http:// URL to ensure that it's in a different " + 31 "origin from the Inspector.</p>" + 32 "<p>Instructions:</p>" + 33 "<ol>" + 34 "<li>Right click the box" + 35 "<img id=logo src='../resources/webkit-background.png'" + 36 "style='border: 1px solid black; display: block; margin: 1em;'>" + 37 "<li>Choose \"Inspect Element\" from the context menu"; 38 if (params.console) { 39 str += "<li>Select the Console"; 40 str += "<li>Type " + params.trigger + " into the console and hit Enter"; 41 } else { 42 str += "<li>" + params.trigger; 43 } 44 str += "<li>If the test failed, a prompt will appear.</ol>"; 45 document.write(str); 46} 47