From 3d5f2a1a8bbf5e22f2efa4ef56228da5ed660c45 Mon Sep 17 00:00:00 2001 From: "Cathy J. Fitzpatrick" Date: Sat, 6 Apr 2013 04:36:08 -0600 Subject: [PATCH] Make crossdomain ajax requests in crossdomain.php --- crossdomain.php | 16 ++++++++-- js/sim.js | 82 ++++++++++++++++++++++++++++++------------------- 2 files changed, 63 insertions(+), 35 deletions(-) diff --git a/crossdomain.php b/crossdomain.php index 3978fc51a..476fc2bde 100644 --- a/crossdomain.php +++ b/crossdomain.php @@ -36,6 +36,9 @@ $sid = isset($_COOKIE['sid']) ? $_COOKIE['sid'] : ''; diff --git a/js/sim.js b/js/sim.js index e87235211..36f1cc07d 100644 --- a/js/sim.js +++ b/js/sim.js @@ -3289,9 +3289,7 @@ function overlaySubmit(e, overlayType) { error: data.actionerror }); } - }), 'text').error(function (e) { - alert('error: ' + e); - }); + }), 'text'); overlayClose(); break; case 'forfeit': @@ -3570,36 +3568,56 @@ teams = (function() { connect(Config.upkeep, $.cookie('showdown_username') || ''); } else { var origin = 'http://play.pokemonshowdown.com'; - $(window).on('message', function($e) { - var e = $e.originalEvent; - if (e.origin !== origin) return; - var data = $.parseJSON(e.data); - Tools.postCrossDomainMessage = function(data) { - return e.source.postMessage($.toJSON(data), origin); + $(window).on('message', (function() { + var callbacks = []; + return function($e) { + var e = $e.originalEvent; + if (e.origin !== origin) return; + var data = $.parseJSON(e.data); + if (data.upkeep) { + Tools.postCrossDomainMessage = function(data) { + return e.source.postMessage($.toJSON(data), origin); + }; + // ajax requests + $.get = function(uri, callback, type) { + var idx = callbacks.length; + callbacks[idx] = callback; + Tools.postCrossDomainMessage({get: [uri, idx, type]}); + }; + $.post = function(uri, data, callback, type) { + var idx = callbacks.length; + callbacks[idx] = callback; + Tools.postCrossDomainMessage({post: [uri, data, idx, type]}); + }; + // teams + if (data.teams) { + cookieTeams = false; + teams = $.parseJSON(data.teams); + } + Teambuilder.writeTeams = function() { + Tools.postCrossDomainMessage({teams: $.toJSON(teams)}); + }; + if (rooms.teambuilder) { + rooms.teambuilder.init(); + } + // prefs + if (data.prefs) { + Tools.prefs.data = $.parseJSON(data.prefs); + } + Tools.prefs.save = function() { + Tools.postCrossDomainMessage({prefs: $.toJSON(this.data)}); + }; + // connect + connect(data.upkeep, data.username); + } else if (data.ajax) { + var idx = data.ajax[0]; + if (callbacks[idx]) { + callbacks[idx](data.ajax[1]); + delete callbacks[idx]; + } + } }; - // sid - $.cookie('sid', data.sid); - // teams - if (data.teams) { - cookieTeams = false; - teams = $.parseJSON(data.teams); - } - Teambuilder.writeTeams = function() { - Tools.postCrossDomainMessage({teams: $.toJSON(teams)}); - }; - if (rooms.teambuilder) { - rooms.teambuilder.init(); - } - // prefs - if (data.prefs) { - Tools.prefs.data = $.parseJSON(data.prefs); - } - Tools.prefs.save = function() { - Tools.postCrossDomainMessage({prefs: $.toJSON(this.data)}); - }; - // connect - connect(data.upkeep, data.username); - }); + })()); var $iframe = $( '