Войти

Показать полную графическую версию : Вопросы по Javascript, Jquery, Ajax.


Страниц : 1 2 [3] 4

Habetdin
06-04-2014, 03:14
Вроде логически всё правильно. Но не работает.
Почему? »
Потому что при каждом выполнении функции вы полностью прогоняете цикл for, в итоге показывая только последний результат :)
Каждую секунду должны переключаться элементы массива. »
Вот и надо переключать по одному, а не прогонять все за один раз. Изменяйте i один раз за выполнение функции, и сравните полученный результат с описанным ниже:
var i = 0; // счетчик = 0
function fixedFunc()
{
// ... используем наш массив с индексом i
i++; // при каждой итерации увеличиваем счетчик
if (array.length == i) i = 0; // и сбрасываем его, если добрались до конца массива :)
}

setInterval(fixedFunc, 1000);

И все в итоге работает (http://jsfiddle.net/Habetdin/7mLA9/2/) :cool:

monopolie
06-04-2014, 04:03
Не получается запустить метод showModalDialog();
Сначало работал, потом перестал почему-то.
Не принимаются параметры через dialogArguments.

Две переменные.

var c = "2sdfgsdfg";
var d = "5sdfgsdfgsdf";

Открываем окно и передаём переменную с.

var cl =showModalDialog("SLOVA.html" , [c])
--------------------------------------------
Другое окно которое открывается.

alert(dialogArguments[0]);
-------------------------------------------
По всякому пробовал уже.

Вот на фидл. Только там это не сработает.
http://jsfiddle.net/YVyj7/

monopolie
06-04-2014, 20:44
Выключил в браюзере блокировку всплывающих окон. Всё заработало.

Можно showModalDialog обработать так чтобы это окно не воспринималось как всплывающее окно?

Какой метод лучше? open() или showModalDialog()

Методом open() кстати даже при заблокированных настройках всплывающих окон передаётся параметр opener.

monopolie
06-04-2014, 21:47
Не получается запустить функцию из дочернего окна.
В главном окне вот эта функция написана.

var cl = open("SLOVA.html");

function dial () {

alert("dfsd");

}

А в дочернем окне пытался так запустить:

opener.dial();

monopolie
06-04-2014, 22:47
Эти методы не кроссбраузерные? Как жаль что они коряво работают. Единственный метод для передачи данных в другое окно.

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

А в самом начале ошибка у меня была потомучто я поместил код всплывающего окна в $(document).ready(function() {});

Habetdin
06-04-2014, 22:54
Эти методы не кроссбраузерные? »
window.open (http://javascript.ru/window-open) вроде бы кроссбраузерен, а вот window.showModalDialog - не уверен.
нужно жать на разрешение всплывающего окна »
Если окно будет открываться в ответ на действие пользователя - например, функцией, вызываемой по клику на каком-либо элементе, разрешения не требуется :)
(AFAIK, из-за этого всплывающая реклама обычно открывается кликом по body :jester:)

monopolie
06-04-2014, 23:59
Есть кроссбраузерный метод в яваскрипте для передачи данных из одной страницы в другую?

Хром не поддерживает open().
А showModalDialog забраковали.
https://developer.mozilla.org/en-US/docs/Web/API/Window.showModalDialog

monopolie
07-04-2014, 01:35
Получается метод open() тоже нельзя использовать. Он в хроме не работает.
Есть замена этим методам? Которые на всех браузерах работают?

monopolie
07-04-2014, 06:25
Блин. И в Фаерфоксе не работает. Что это за методы, для издевательств чтоли??
Я как раз из за этих возможностей начал яваскрипт учить. А тут такое дело что этих возможностей и нету.
В главном окне открываю окно и вызываю функцию из открывшегося окна.

var cl = open("SLOVA.html" , "name" );

cl.ret();


В открывшемся окне написана функция которая должна выполниться.

function ret() {
alert("Алерт");
}
Фаербаг пишет что функции cl.ret(); не существует.
--------------------------------------
Только интернет Эксплорер работает с этим методом. И этим Интернет эксплорером уже никто не пользуется.

Habetdin
07-04-2014, 09:30
Фаербаг пишет что функции cl.ret(); не существует. »
Дождитесь загрузки страницы в дочернем окне, а затем вызывайте функцию. Либо таймаут (setTimeout), либо ожидание события загрузки... :)
Он в хроме не работает. »
Вызывается при действии пользователя?
Если окно будет открываться в ответ на действие пользователя, разрешения не требуется »
Кстати, на локалке хром будет жаловаться при тестировании междуоконных вызовов:
Uncaught SecurityError: Blocked a frame with origin "null" from accessing a frame with origin "null". Protocols, domains, and ports must match.
А на тестовом сайте все нормально, и "в ту", и "в другую сторону" между окнами функции вызываются :tomato2:

monopolie
07-04-2014, 10:29
Делал я уже так. Ждать загрузки документа и потом выполнять код. Так даже и Интернет Експлорер не работает.

Главное окно.
$(document).ready(function() {

var cl = open("SLOVA.html" , "name" );

cl.ret();

});

Дочернее окно.

$(document).ready(function() {
function ret() {
alert("Алерт");
}
});

И чередовал их тоже. Один без ready другой с ready.
В интернет експлорере работает, в других браузерах нет.

Habetdin
07-04-2014, 10:34
Ждать загрузки документа и потом выполнять код »
var cl = open("SLOVA.html" , "name" );
cl.ret(); »
Ну нету же здесь ожидания перед cl.ret() :closed-to
этим кодом ждётся загрузка документа »
Это дочернее окно ждет своей загрузки перед объявлением функции ret(),
а вот главное окно ничего не ждет и сразу после открытия пытается запустить ret(), которого нет :tomato2:

monopolie
07-04-2014, 13:24
Разобрался как это работает. Спасибо.

Но почему то в Хроме не работает.
Онлайн работает всё в хроме.

А на компьютере не работает. Я скопировал всё так же как и в онлайн примере.
В других браузерах работает кроме хрома.

Habetdin
07-04-2014, 15:16
А на компьютере не работает »
Я писал выше (http://forum.oszone.net/post-2334133-50.html) про политику безопасности в хроме, при локальной работе он не считает безопасным обращение одной страницы к другой :dont-know
Так что тестировать локально можно либо в другом браузере, либо используя какой-нибудь веб-сервер (простой путь - denwer).

monopolie
07-04-2014, 18:35
Какие есть ещё параметры?
if (windowRef.closed == false)

closed.
Наверное ещё opened есть? А ещё какие?

Habetdin
07-04-2014, 18:38
Наверное ещё opened есть? »
Если не closed - значит окно еще не закрыли. opened для такой проверки не существует, ибо не нужен.
[hr]А ещё какие? »
На не раз уже приводимом для справки сайте javascript.ru есть описание и этого: window: методы, свойства (http://javascript.ru/window) ;)

monopolie
09-04-2014, 21:48
Можно как нибудь оффлайн, без денвера воспроизводить аудио в IE8?

Habetdin
09-04-2014, 22:01
monopolie, поддержка тега audio появилась в IE 9 версии. Для старых версий IE можно использовать embed/object.

monopolie
09-04-2014, 23:01
В Хроме <embed> просит устанавливать плагин QuickTimePlayer.
В Фаерфоксе <embed> не работает. Ошибок не выдаёт.
В IE8 оффлайн не работают некоторые методы. Например hidden= "true".
Онлайн работают http://learn.javascript.ru/play/tVYo6b

-----------------------------

Тег <object> не работает ни в каком браузере.
В IE8 показывается неактивная панелька плеера.

-----------------------------

У меня Виндовс ХР. IE9 не смогу поставить.

Habetdin
10-04-2014, 10:38
monopolie, а почему для mp3 выбран mime-тип audio/x-midi? Правильный - audio/mpeg.
Вот тут (http://www.w3schools.com/html/html_sounds.asp) можно протестировать работу embed и object, переходя по "Try it yourself" после примеров кода. Ну и заодно там есть "The Best Solution" - пример "отката" на embed при неподдерживаемом audio в браузере.




© OSzone.net 2001-2012