From 445b6a53222c553695e7aa95ad727e529aeb62eb Mon Sep 17 00:00:00 2001 From: Ivan Tcholakov Date: Wed, 9 Feb 2011 00:30:53 +0200 Subject: [PATCH] Task #1991 - Updating the script jquery.frameready.js to version 1.2.1. --- main/inc/lib/javascript/jquery.frameready.js | 128 +++++++++++-------- 1 file changed, 77 insertions(+), 51 deletions(-) diff --git a/main/inc/lib/javascript/jquery.frameready.js b/main/inc/lib/javascript/jquery.frameready.js index 16b1345bae..8086dbde41 100755 --- a/main/inc/lib/javascript/jquery.frameready.js +++ b/main/inc/lib/javascript/jquery.frameready.js @@ -2,7 +2,7 @@ * * frameReady: Remote function calling for jQuery * - * Version 1.2.0 + * Version 1.2.1 * * Copyright (c) 2007 Daemach (John Wilson) , http://ideamill.synaptrixgroup.com * Licensed under the MIT License: @@ -10,8 +10,9 @@ * * Credit John Resig and his excellent book for the ready function concepts. * + * Credit to Mike Alsup for the logging code. * ============================================================================================ - * Usage: $.frameReady(function (function),target (string)[,options (map/object)]); + * Usage: $.frameReady(function (function),target (string)[,options (map)][,callback (function)]); * * Function: (function/required) An anonymous function to be run within the target frame. * @@ -28,22 +29,25 @@ * $("p",top.mainFrame.document). If false, jQuery will not be loaded automatically * and you must use a context in jquery selectors. * - * load: (array or object) jquery is loaded by default. You can pass a single object to - * frameReady, or an array of objects that will be loaded and tested in order. 2 types - * of files can be loaded. Scripts and stylesheets: + * data: (object) An object to be passed as-is to the target frame. This is where you pass + * variable data, rather than in a closure. * - * scripts: {type:"script", src:"/js/myscript.js", id:"_ms", test:"afunction"} - * stylesheets: {type:"stylesheet", src:"/css/mycss.css", id:"_ss"} + * load: (object or array of objects) jquery is loaded by default. You can pass a single object to + * frameReady, or an array of objects that will be loaded and tested in order. 2 types + * of files can be loaded. Scripts and stylesheets: * - * type: (string/required) "script" for script files, "stylesheet" for stylesheets. - * src: (string/required) The source of the file, ie: /js/myscript.js. - * id: (string/optional) An id for the id attribute. If one isn't provided it - * will be generated. - * test: (sting/optional) The name of a function that should exist once the script - * is loaded properly. Until this function becomes available, the script will - * be considered not ready and no other files will be loaded. If a test is not - * provided, the next file will be loaded immediately. Tests are not useful - * with stylesheets. + * scripts: {type:"script", src:"/js/myscript.js", id:"_ms", test:"afunction"} + * stylesheets: {type:"stylesheet", src:"/css/mycss.css", id:"_ss"} + * + * type: (string/required) "script" for script files, "stylesheet" for stylesheets. + * src: (string/required) The source of the file, ie: /js/myscript.js. + * id: (string/optional) An id for the id attribute. If one isn't provided it + * will be generated. + * test: (sting/optional) The name of a function that should exist once the script + * is loaded properly. Until this function becomes available, the script will + * be considered not ready and no other files will be loaded. If a test is not + * provided, the next file will be loaded immediately. Tests are not useful + * with stylesheets. * * One gotcha: You must have something other than space characters within the body tags of * target frame documents for frameReady to work properly. A single character is enough. @@ -80,13 +84,27 @@ if (typeof $daemach == "undefined") { return; } else { top.window.console.log([].join.call(arguments,'')); - } - } -} + }; + }; + $daemach.time = function() { + if (!top.window.console || !top.window.console.time || !$daemach.debug) { + return; + } else { + top.window.console.time([].join.call(arguments,'')); + }; + }; + $daemach.timeEnd = function() { + if (!top.window.console || !top.window.console.timeEnd || !$daemach.debug) { + return; + } else { + top.window.console.timeEnd([].join.call(arguments,'')); + }; + }; +}; if (typeof $daemach["frameReady"] == "undefined") { $daemach["frameReady"] = {}; -} +}; jQuery.frameReady = function(f,t,r,j) { @@ -109,10 +127,12 @@ jQuery.frameReady = function(f,t,r,j) { load: [ {type:"script",id:"_jq", src:jQueryPath, test:"jQuery"} ], bLoaded: false, loadInit: [], + data: {}, callback: false }; $fr[fn]["target"] = t; - } + }; + var fr = $fr[fn]; var frs = fr["settings"]; @@ -135,11 +155,14 @@ jQuery.frameReady = function(f,t,r,j) { if (typeof arg.jquery !== u) { frs.jquery = arg.jquery; }; + if (typeof arg.data !== u) { + frs.data = arg.data; + }; // if we're not running functions in the remote frame itself, no need for jQuery if (!frs.remote || !frs.jquery) { frs.load.pop(); - } + }; if (typeof arg.load !== u) { var bl = true; @@ -148,18 +171,18 @@ jQuery.frameReady = function(f,t,r,j) { bl = true; for (var h=0;h