Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 15.05.2012, 17:12
Аватар для Ex_Soft
Профессор
Отправить личное сообщение для Ex_Soft Посмотреть профиль Найти все сообщения от Ex_Soft
 
Регистрация: 19.12.2009
Сообщений: 164

Начните с этой дрозофилы:
Ext.onReady(function() {
	Ext.create("Ext.window.Window", {
		height: 100,
		width: 100,
		html: "<div><img id=\"TestImg\"></div>",
		listeners: {
			afterrender: function(win, eOpts) {
				this.getImg().addListener("load", function(e, img, eOpts) {
					if(window.console && console.log)
						console.log("img.onload(%o) - теперь здесь можно дергать jQuery'вскую суперпупермегафункцию, работающую с изображением", arguments);
				});
			},
			resize: function(win, width, height, eOpts ) {
				var
					imgs = ["http://javascript.ru/forum/images/smilies/cray.gif", "http://javascript.ru/forum/images/smilies/help.gif", "http://javascript.ru/forum/images/smilies/stop.gif", "http://javascript.ru/forum/images/smilies/smile.gif"];

				this.getImg().set({ src: imgs[(width+height)%4] });
			}
		},
		getImg: function() {
			if(!this.img)
				this.img = Ext.get("TestImg");

			return this.img;
		}
	}).show();
});
__________________
"Helo, word!" - 17 errors 56 warnings

Последний раз редактировалось Ex_Soft, 15.05.2012 в 17:27.
Ответить с цитированием
  #22 (permalink)  
Старый 21.05.2012, 22:18
Аспирант
Отправить личное сообщение для JDev Посмотреть профиль Найти все сообщения от JDev
 
Регистрация: 19.11.2011
Сообщений: 77

Начал переделывать так как вы написали.
Контент загружается первый раз и выделяется, но не отсылает данные на сервер и при изменении размера ничего не происходит.. Может подскажете где зарыто?

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    
    <head>
        <title>JFreeChart_Bsp</title>
		<link rel="stylesheet" type="text/css" href="./extjs/resources/css/ext-all.css">
        <link rel="stylesheet" type="text/css" href="./jQuery/imgareaselect-0.9.8/css/imgareaselect-default.css"/>
        
        <script type="text/javascript" src="./jQuery/jquery-1.7.2.js"></script>
        <script type="text/javascript" src="./jQuery/imgareaselect-0.9.8/scripts/jquery.min.js"></script>
        <script type="text/javascript" src="./jQuery/imgareaselect-0.9.8/scripts/jquery.imgareaselect.js"></script>
		
		<script type="text/javascript" src="./extjs/ext-all-debug.js"></script>

    </head>
    
    <body>
 
		<script type="text/javascript">
		
        var random = Math.floor((Math.random() * 10000) + 1);
        var cookie = "cookieName=" + random;
        var adresse = "/JFreeeChartServlet/generateImg?" + cookie;
        var cookieString = new String();
        
        
        Ext.onReady(function() {
        	Ext.create("Ext.window.Window", {
        		height: 785,
        		width: 1465,
        		html: '<div id="generateImage"><img id="target"></div>',
        		listeners: {
        			afterrender: function(win, eOpts) {
        				this.getImg().addListener("load", function(e, img, eOpts) {
        					$("#target").one('load', loadCallback).attr('src', adresse).each(function () {
				                if (this.complete) $(this).trigger('load');
				            });
        				});
        			},
        			resize: function(win, width, height, eOpts ) {
        				this.getImg().set({ src: adresse });
        			}
        		},
        		getImg: function() {
        			if(!this.img)
        				this.img = Ext.get("target");

        			return this.img;
        		}
        	}).show();
        	
        	
            $('#target').imgAreaSelect({
                handles: true,
                movable: false,
                resizable: false,
                autoHide: true,
                onSelectEnd: function (img, selection) {
                        $("#target").one('load', loadCallback).attr("src", adresse + "&x1=" + selection.x1 + "&y1=" + selection.y1 + "&width=" + selection.width + "&height=" + selection.height).each(
                        function () {
                            if ($("#target").complete) 
                            		$("#target").trigger('load');
                        });
                }
            });
            
		});


            function loadCallback() {
            	cookieString = get_all_cookie(random)
            	
//              console.log("Cookie@"+random+"  DocCookie = " + cookieString);
//             	console.log("Cookie@"+random+" : "+substr_search("plotWidth"));
//             	console.log("Cookie@"+random+" : "+substr_search("plotHeight"));
//             	console.log("Cookie@"+random+" : "+substr_search("plotX"));
//             	console.log("Cookie@"+random+" : "+substr_search("plotY"));
                
                
                setVars(substr_search("plotWidth"), substr_search("plotHeight"), substr_search("plotX"),substr_search("plotY"));
            }

            function get_all_cookie(cookie_name) {
                var results = document.cookie.match('(^|;) ?' + cookie_name + '=([^;]*)(;|$)');

                if (results) return (unescape(results[2]));
                else return null;
            }
            
            function substr_search(str){
            	var strStartPos = cookieString.search(str);
             	var startPos = cookieString.indexOf("=", strStartPos);
             	var endPos = cookieString.indexOf(":", strStartPos);

            	return cookieString.substring(startPos+1, endPos);
            }

        </script>
    </body>
</html>


Спасибо!
Ответить с цитированием
  #23 (permalink)  
Старый 22.05.2012, 10:46
Аспирант
Отправить личное сообщение для JDev Посмотреть профиль Найти все сообщения от JDev
 
Регистрация: 19.11.2011
Сообщений: 77

Хмммм, а вот эта функция вообще срабатывает несколько раз, а может и несколько десятков раз в секунду..
afterrender: function(win, eOpts) {
        				this.getImg().addListener("load", function(e, img, eOpts) {
        					console.log("Listener");
        					$("#target").one('load', loadCallback).attr('src', adresse).each(function () {
				                if (this.complete) $(this).trigger('load');
				            });
        				});
        			},
Ответить с цитированием
  #24 (permalink)  
Старый 22.05.2012, 11:26
Аватар для Ex_Soft
Профессор
Отправить личное сообщение для Ex_Soft Посмотреть профиль Найти все сообщения от Ex_Soft
 
Регистрация: 19.12.2009
Сообщений: 164

Вы уже сами себе ответили?
__________________
"Helo, word!" - 17 errors 56 warnings
Ответить с цитированием
  #25 (permalink)  
Старый 22.05.2012, 11:35
Аспирант
Отправить личное сообщение для JDev Посмотреть профиль Найти все сообщения от JDev
 
Регистрация: 19.11.2011
Сообщений: 77

Так вот, послушал вас, обеспечил все в ексте, а дальше..
но срабатывает несколько раз в сек не моя функция джКвери, а срабатывает вот это..
this.getImg().addListener("load", function(e, img, eOpts) {
3	                            console.log("Listener");

Как исправить? Пасиб
Ответить с цитированием
  #26 (permalink)  
Старый 22.05.2012, 11:54
Аватар для Ex_Soft
Профессор
Отправить личное сообщение для Ex_Soft Посмотреть профиль Найти все сообщения от Ex_Soft
 
Регистрация: 19.12.2009
Сообщений: 164

Сообщение от JDev Посмотреть сообщение
Так вот, послушал вас, обеспечил все в ексте, а дальше..
/me вспоминает: "Обычно люди обращаются за советом только для того, чтобы не следовать ему, а если кто-нибудь и следует совету, то только для того, чтобы было кого упрекнуть впоследствии"...

Сообщение от JDev Посмотреть сообщение
но срабатывает несколько раз в сек не моя функция джКвери, а срабатывает вот это..
this.getImg().addListener("load", function(e, img, eOpts) {
3	                            console.log("Listener");
В этом в <img> на событие load вешается обработчик. И, если он (обработчик события load) дергается несколько раз в секунду, это означает, что картинка грузится несколько раз в секунду. Т.е. кто-то/что-то несколько раз в секунду меняет ей src

Сообщение от JDev Посмотреть сообщение
Как исправить?
Найти "виновника торжества" - того, кто меняет src <img> несколько раз в секунду. И тут мы снова возвращаемся к? Вы теперь выяснили для себя что конкретно стоит за каждым вагоном паравоза? Или продолжаем в духе а-ля:
Сообщение от АБС
....большая машина "воин-купол" пришла в движение от пальца в отверстии пятом и от пальца в отверстии сорок седьмом, и движение было неодолимое, быстрое и прямое...
?
__________________
"Helo, word!" - 17 errors 56 warnings
Ответить с цитированием
  #27 (permalink)  
Старый 22.05.2012, 14:21
Аспирант
Отправить личное сообщение для JDev Посмотреть профиль Найти все сообщения от JDev
 
Регистрация: 19.11.2011
Сообщений: 77

[quote автор]Найти "виновника торжества" - того, кто меняет src <img> несколько раз в секунду. И тут мы снова возвращаемся к? Вы теперь выяснили для себя что конкретно стоит за каждым вагоном паравоза? Или продолжаем в духе а-ля:[/quote] - да!

Вот с коментариями и переделаная.
Вот это было раньше

$("#target").one('load', loadCallback).attr('src', adresse).each(function () {
     if (this.complete) $(this).trigger('load');
});


Вот так я переделал.
$("#target").bind('load', loadCallback);//вешаем евент на img c id="target"
 			var imgObj = $("#target").attr('src', adresse);//засовываем в imgObj картинку которую получили в последствии изменения аттрибута src, в него грузим картинку adresse="/JFreeeChartServlet/generateImg?cookieName=random"
			$(imgObj).each(function () {//вызиваем функцию для нашей картинки
                if (imgObj.complete) // картинка загружена полностью, тогда
                	$(imgObj).trigger('load');//триггер вызывает евент  'load' - идет на выполнение функция loadCallback().
            });


Этот весь замут с триггером нужно, чтоб сразу же прочитать кукисы с сервера и вставить необходимые значения в плагин imgAreaSelect. Если я просто вызову функцию loadCallback() после загрузки картинки без этих фишек, у меня при первом вызове кукисы будут нулевые.
Ответить с цитированием
  #28 (permalink)  
Старый 22.05.2012, 19:22
Аспирант
Отправить личное сообщение для JDev Посмотреть профиль Найти все сообщения от JDev
 
Регистрация: 19.11.2011
Сообщений: 77

надеюсь, что по этому вопросу больше вопросов нет.
Вот так у меня получилось, все загружает так как нужно.

<script type="text/javascript">
		
        var random = Math.floor((Math.random() * 10000) + 1);
        var cookie = "cookieName=" + random;
        var adresse = "/JFreeeChartServlet/generateImg?" + cookie;
        var cookieString = new String();
        
        
        Ext.onReady(function() {
        	Ext.create("Ext.window.Window", {
        		height: 785,
        		width: 1465,
        		html: '<div id="generateImage"><img id="target"></div>',
         		listeners: {
         			resize: function(win, width, height, eOpts ) {
         				
        	 			$("#target").bind('load', loadCallback);
        	 			var imgObj = $("#target").attr('src', adresse + "&chartW=" + width + "&chartH=" + height);
        				$(imgObj).each(function () {
        	                if (imgObj.complete) 
        	                	$(imgObj).trigger('load');
        	            });
        	 			
         			}
         		}
        	}).show();
 	
            $('#target').imgAreaSelect({
                handles: true,
                movable: false,
                resizable: false,
                autoHide: true,
                onSelectEnd: function (img, selection) {
                        $("#target").bind('load', loadCallback);
                        var newImg = $("#target").attr("src", adresse + "&x1=" + selection.x1 + "&y1=" + selection.y1 + "&width=" + selection.width + "&height=" + selection.height);
                        $(newImg).each(
                        	function () {
                            	if ($(newImg).complete) 
                            		$(newImg).trigger('load');
                        	});
                }
            });
            
		});


            function loadCallback() {
            	cookieString = get_all_cookie(random)
         
                setVars(substr_search("plotWidth"), substr_search("plotHeight"), substr_search("plotX"),substr_search("plotY"));
            }

            function get_all_cookie(cookie_name) {
                var results = document.cookie.match('(^|;) ?' + cookie_name + '=([^;]*)(;|$)');

                if (results) return (unescape(results[2]));
                	else return null;
            }
            
            function substr_search(str){
            	var strStartPos = cookieString.search(str);
             	var startPos = cookieString.indexOf("=", strStartPos);
             	var endPos = cookieString.indexOf(":", strStartPos);

            	return cookieString.substring(startPos+1, endPos);
            }

        </script>


Если можно еще два вопроса.
Я вот пробовал с помощью плагина jQuery.cookies вытащить кукисы, чтоб избавиться от этих трех функций, которые я использую для того чтоб их достать, но почему-то в loadCallback() $.cookie равно нулю, хотя функция прекрасно тащит их с DOM.

И еще одно, у меня окошко в котором я определяю координаты, если я перетаскиваю окошко, соответственно координати у плагина теряются, как мне отслеживать поведение перемещения окна ExtJs.

спасибо Вам большое!!
Ответить с цитированием
  #29 (permalink)  
Старый 23.05.2012, 10:13
Аватар для Ex_Soft
Профессор
Отправить личное сообщение для Ex_Soft Посмотреть профиль Найти все сообщения от Ex_Soft
 
Регистрация: 19.12.2009
Сообщений: 164

Сообщение от JDev Посмотреть сообщение
cookies
Ext.util.Cookies
Сообщение от JDev Посмотреть сообщение
как мне отслеживать поведение перемещения окна ExtJs.
move
__________________
"Helo, word!" - 17 errors 56 warnings
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнить 2 разных действия при одном запросе. Gesandte AJAX и COMET 12 18.12.2011 16:53
Как выполнить код javascript при инклюде странички на php wfire jQuery 7 27.05.2011 14:43
Как сделать так, чтобы JS при нажатии на кнопку не выполняла запрос со страницы. JSProgrammer Элементы интерфейса 3 18.05.2010 20:18