Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116

Открыть новую тему     Написать ответ в эту тему

Monaxmm

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите решить проблуму,  
надо сделать прогу, скорее всего Java Script если возможно или C#.  
 
Задача: есть прибор, надо его состояние в 2х видах сделать (Включен и выключен (2е картинки)) .  Что б юзер при нажатии изминял состяние с предуприждением, и ето состояние каждый раз сохронялось, то есть если занаово зашел на странице то предведущие состояние сохранилось!  
 
Попробывал на JavaScript, но почему то сосояние картинки не сохроняеться, и как сделать, если вторая картинка уже высвитилась вернуться к первой???  
 
 
 
<!DOCTYPE html>
<html>
<body>
 
<img name="BILD" id="BILD" src="state_1.jpg" onclick="Picture_change()">  </img>
 
/*<p id="demo"></p>
 
<script>
function Picture_change()
{
var i=0;
 
var r=confirm("Schoul the state be changed?");
 
    if (r==true)  
  {
    document.getElementById('BILD').src="state_2.jpg";
    i++;  
 
    }
    
    else
        
  {
    
     document.getElementById('BILD').src="state_1.jpg";
      alert("Der Staus ist nicht ge&#228;ndert worden");
 
  }
 
var x=document.getElementById("BILD").innerHTML;
 
}
</script>
 
</body>
</html>

Всего записей: 5 | Зарегистр. 05-04-2008 | Отправлено: 19:18 14-03-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Monaxmm

Цитата:
но почему то сосояние картинки не сохроняеться, и как сделать,  

а с чего оно сохраняться будет ?)  
вы когда обновляете страницу - запускаете заново весь скрипт.
нужно записывать его или в куки, или же html5 хранилища.
но это будет работать только для данного пользователя в данном браузере.  
чтобы срабатывало для всех, нужно использовать серверные скрипты.
 
JavaScript: document.cookie (куки)

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:39 14-03-2014 | Исправлено: Cheery, 21:40 14-03-2014
hukker



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди, проконсультируйте товарища:
http://toster.ru/q/80732

Всего записей: 883 | Зарегистр. 05-09-2007 | Отправлено: 14:47 23-03-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
hukker
а чего товарищ не здесь спрашивает?
 
ну, зачем в куках лишнее гонять - есть же storage в хроме
http://developer.chrome.com/extensions/storage
 

Цитата:
Т.е. при второй и последующих попытках обращения к mysite.com значение ссылки берётся уже из кукисов и всё отрабатывает как надо, хост подменяется.

интересно как, если  

Код:
function getLink() {
    // смотрим, есть ли у нас в кукисах сохранённый адрес нужной ссылки
    // Если есть - берём его. В противном случае выполняем запрос к API сервиса
    chrome.cookies.get({url:'http://api.service.com', name:'newlink'}, function(cook) {
        if ( ! cook)
            return setLink();
        else
            return cook.value;
    });
}

функция getLink ничего не возвращает, возвращает коллбек функция, а не сама getLink
 
ну а не вдаваясь в подробности - почти весь API у хрома - асинхронный (синхронное - "зло").  
 
да, к тому же, у него указано  

Цитата:
// extraInfoSpec
    ["blocking"]

 

Цитата:
If the optional opt_extraInfoSpec array contains the string 'blocking' (only allowed for specific events), the callback function is handled synchronously. That means that the request is blocked until the callback function returns. In this case, the callback can return a webRequest.BlockingResponse that determines the further life cycle of the request. Depending on the context, this response allows cancelling or redirecting a request (onBeforeRequest), cancelling a request or modifying headers (onBeforeSendHeaders, onHeadersReceived), or providing authentication credentials (onAuthRequired).

 
так что проблема не в этом.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:10 23-03-2014
aon24



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
js = {};
js.include = function(path) {
    document.write('<script type="text/javascript" src="' + path + '"></sc'+'ript>');  
}
 
js.include('js/json2.js');
js.include('js/jquery.js');
js.include('js/toolkit.js');
js.include('js/jquery.cookie.js');  

 
 
Есть тонкость с версиями html страницы при разрешенном кэшировании. Если номер версии формируется сервером автоматически, он должен учитывать даты изменений всех скриптов. Иначе браузер возьмет старую страницу из кэша.

Всего записей: 10 | Зарегистр. 31-03-2014 | Отправлено: 10:53 06-04-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
aon24
вопрос то где?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:43 06-04-2014
autodromo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет! Ребята, помогите решить задачу. Для профи она должна быть простой. А я в синтаксисе js вообще не разбираюсь.
 
Задача: например есть 3 ссылки в ряд, по умолчанию они "захлопнуты"(div style="display:none").
1 - Нажатие на любую ссылку, делает активной ссылке highlight и "разворачивает" под ней информацию;
 
2- Повторный клик на активную захлопывает её. Так же активную (текущую/кликнутую) ссылку должен захлопывать клик на любую другую ссылку и разворачивать в тот же момент содержание кликнутой ссылки ну и естественно + highlight уже у другой активной.
 
Пока я реализовал только закрытие/открытие по одной и той же ссылке, а вот как сделать подсветку активной и захлопывать ее еще и по нажатию другой ссылки для меня проблема.  Может поможете?
 
html+css
___
 
<style>
 
.pseudo-link {
 
    text-decoration: none;
    border-bottom: 1px dashed #999;
    display:inline;
}
 
.hidden-text {
 
    display: none;
    padding-top: 10px;
    font-size: .9em
}
 
.align {margin-left: 15px}
 
</style>
 
<div class="links">
                    <a class="pseudo-link" href="#" id="1">link1</a>
                    <a class="pseudo-link align" href="#" id="2">link2</a>                    
                    <a class="pseudo-link align"  href="#" id="3">link3</a>
 
<div id="1-1" class="hidden-text">Текст1</div>
<div id="2-2" class="hidden-text">Текст2</div>
<div id="3-3" class="hidden-text">Текст3</div>
 
</div>
 
<script language="javascript" src="js/pseudo-link.js"></script>
-------
 
JS файл
___
 
$("#1").click(function(){
    $("#1-1").slideToggle("slow");
    });
$("#2").click(function(){
    $("#2-2").slideToggle("slow");
    });
$("#3").click(function(){
    $("#3-3").slideToggle("slow");
    });
 
Что нужно дописать, чтобы решить задачу? Подскажите пожалуйста.
Повторюсь, что не знаю ни капли синтаксиса js

Всего записей: 57 | Зарегистр. 16-01-2009 | Отправлено: 14:48 14-04-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
autodromo
ну, для начала, id не может начинаться с цифры.
 
 
http://jsfiddle.net/fuhRN/
 

Код:
<div class="links">  
<a class="pseudo-link" href="#" id="link-1">link1</a>  
<a class="pseudo-link align" href="#" id="link-2">link2</a>                    
<a class="pseudo-link align"  href="#" id="link-3">link3</a>  
 
<div id="block-1" class="hidden-text">Текст1</div>  
<div id="block-2" class="hidden-text">Текст2</div>  
<div id="block-3" class="hidden-text">Текст3</div>  
 
</div>  

 

Код:
$(document).ready(function(){
    $('.pseudo-link').click(function(){
       var id = $(this).attr('id').replace(/^\D+/g,'');
        $('.hidden-text:not(#block-' + id + ')').slideUp('fast');
        $('#block-' + id).slideToggle("slow");
    });
});


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:40 14-04-2014
autodromo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Спасибо огромное! А как сделать background highlight у кликнутой ссылки?
Но уже и на этом спасибо огромное!

Всего записей: 57 | Зарегистр. 16-01-2009 | Отправлено: 10:21 15-04-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
autodromo

Цитата:
А как сделать background highlight у кликнутой ссылки?  

аналогично
http://jsfiddle.net/fuhRN/1/
 

Код:
$(document).ready(function(){
    $('.pseudo-link').click(function(){
        var id = $(this).attr('id').replace(/^\D+/g,'');
        $('.hidden-text:not(#block-' + id + ')').slideUp('fast');
        $('#block-' + id).slideToggle("slow");
       $('.pseudo-link').not($(this)).removeClass('highlight');
        $(this).toggleClass('highlight');

        return false;
    });
});

 
ps: да, забыл добавить выделенное красным.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:55 15-04-2014 | Исправлено: Cheery, 20:15 15-04-2014
autodromo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Благодарю! Ты просто гуру Спасибо

Всего записей: 57 | Зарегистр. 16-01-2009 | Отправлено: 06:57 16-04-2014
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
такой вопрос.
Есть локальная страница (протокол file://). Она грузит скрипт init.js, который в свою очередь подгружает другие скрипты.
В одном из них есть подобное:

Код:
(function(window){
 
alert(window);
 
}).call({}, window);

 
В большинстве случаев в хроме и ff переменная window почему-то оказывается undefined. Т.е. как-будто window еще не существует. В Опере Presto и IE всегда все норм.
 
При этом в init.js инициализирована глобальная переменная global (типа Node.js-подобие), global = window. И в то время, когда выше window === undefined, свойство global.window = ОК (проверял отладчиком в хроме, поставив брейкпоинт на этом alert'е).
 
Чего это за фигня может быть?
 
PS.
document на том брейкпоинте тоже undefined.
 
Пока решил так:

Код:
(function(){
 
var
    window = global.window,
    document = window.document;
 
}).call({});

 
PS2.
хром и ff вообще какие-то странные. Даже символических ссылки на файлы не воспринимают. Недоделанная кроссплатформенность ?

Всего записей: 6637 | Зарегистр. 14-02-2005 | Отправлено: 00:04 26-04-2014 | Исправлено: unreal666, 00:07 26-04-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666
а выложить упрощенный вариант всего этого?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:16 26-04-2014
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Эмм. Упрощенные не получится. Там файлы большие. Хотя сейчас попробую.  
 
PS.
Хотя фиг его знает как. Там зависимости от путей еще.
Только так может быть:
engine.js
Это уже исправленный вариант.
 
Добавлено:
хм. кажется понял почему теряется window.
Было

Код:
(function(window){  
   
 var self = this,  
     callee = arguments.callee;  
   
 if (!global.window.jQuery || !global.window.hljs) {  
     setTimeout(callee, 10);  
     return;  
 }  
   
 // Песочница  
 var  
     window = global.window,  
     document = window.document,  
     Node  = window.Node;  
 ......  
 }).call({}, window);

А хром и ff какие-то более асинхронные и jquery и hljs не успевали грузиться до этого скрипта => Происходил setTimeout(callee, 10); => вызов анонимной функции без установленного параметра window.

Всего записей: 6637 | Зарегистр. 14-02-2005 | Отправлено: 00:37 26-04-2014 | Исправлено: unreal666, 01:06 26-04-2014
vs6262



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть код.
вопрос: в полном ли объеме (КБ, МБ) загружается ли картинка в переменную "img" ?

Код:
<!DOCTYPE html>
<html>
<body>
 
<p>Image to use(Hidden):</p>
<img id="scream" src="Foto.jpg" alt="The Scream" width="400" height="374" style="visibility:hidden;"><p>Canvas:</p>
<canvas id="myCanvas" width="420" height="394" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.</canvas>
 
<script>
 
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var img=document.getElementById("scream");
ctx.drawImage(img,10,10);
 
</script>
 
</body>
</html>
 

Всего записей: 2188 | Зарегистр. 25-02-2013 | Отправлено: 17:09 08-05-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vs6262

Цитата:
в полном ли объеме (КБ, МБ) загружается ли картинка в переменную "img"  

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

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 18:19 08-05-2014
vs6262



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть код.  
как сделать так чтобы при загрузке последующей картинки она бы не уменьшалась?
 

Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
<body>
    
 
<label>Image File:</label><br/>
<input type="file" id="imageLoader" name="imageLoader"/>
<canvas id="imageCanvas" width="700" height="700" style="border:1px solid #d3d3d3;"></canvas>
 
 
<script>
var imageLoader = document.getElementById('imageLoader');
    imageLoader.addEventListener('change', handleImage, false);
var canvas = document.getElementById('imageCanvas');
var ctx = canvas.getContext('2d');
 
function handleImage(e){
    var reader = new FileReader();
    reader.onload = function(event){
        var img = new Image();
        img.onload = function(){
            var scal = 0;
            var scalW = 1 / img.width * canvas.width;
            var scalH = 1 / img.height * canvas.height;
             
            if(scalW <= scalH) scal = scalH;
            else scal = scalW;
            ctx.scale(scal, scal);
            ctx.drawImage(img,0,0);
        }
        img.src = event.target.result;
    }
    reader.readAsDataURL(e.target.files[0]);      
}
</script>
 
</body>
</html>

Всего записей: 2188 | Зарегистр. 25-02-2013 | Отправлено: 15:07 10-05-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vs6262

Цитата:
 последующей картинки она бы не уменьшалась

по мне - так увеличивается (зависит, конечно, от размера картинок).
 
сделайте так

Код:
        img.onload = function(){  
           ctx.save();
            var scal = 0;  
            var scalW = 1 / img.width * canvas.width;  
            var scalH = 1 / img.height * canvas.height;  
            if(scalW <= scalH) scal = scalH;  
            else scal = scalW;  
            ctx.scale(scal, scal);  
            ctx.drawImage(img,0,0);  
           ctx.restore();
        }  

иначе у вас просто масштабирование "накапливается" с каждым разом.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:07 10-05-2014 | Исправлено: Cheery, 20:07 10-05-2014
ISP87

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В 1C выводится яндекс карта, надо сохранить ее в графический файл (stacic api не подходит). Как ее можно сохранить в буфер обмена или в файл.
 
Пробовал симулировать нажатие клавиши PrtScr через WShell, но не работает.  
Как можно использовать clipboard и setData() для помещения ? Какие еще есть способы?

Всего записей: 3 | Зарегистр. 03-02-2014 | Отправлено: 11:09 13-05-2014
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
можно как-то однозначно определить, существует ли какой-то элемент массива?
Просто проверка на undefined не катит, т.к. сам элемент может быть объектом (или чем он там является) undefined.
 
Добавлено:
только один вариант в голову приходит - пропуск массива через один из методов массивов типа forEach. Они пропускают отсутствующие элементы, но не пропускают элементы со значением undefined.

Всего записей: 6637 | Зарегистр. 14-02-2005 | Отправлено: 17:09 28-05-2014 | Исправлено: unreal666, 17:20 28-05-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116

Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru