PDA

Просмотр полной версии : Рефреш страницы браузера из флэшки


dark256
09.11.2012, 01:17
Вешаю во флэшке на нажатие кнопки следующее:

getURL("javascript:setTimeout('window.location.reload()',1000);" );

Локально - страница обновляется.
На сайте - эта строка вставляется в адресную строку браузера (Мозилла) и все.

allowScriptAccess = true - для SWFObject результат дало частично
в Хроме заработало. В Мазиле - нет.

Krusty
09.11.2012, 01:54
maybe
window.location.reload(true);

Hauts
09.11.2012, 08:14
getURL("javascript:(function(){setTimeout('window.location.reload()',1000);})()" );

Можно попробовать в анонимную функцию обернуть.

А можно и в две:

getURL("javascript:(function(){setTimeout(function(){window.location.reload()},1000);})()" );

Кстати я не в курсе, как setTimeout в яваскрипте относится к строке, а не к ссылке на функцию, можно еще попробовать так:

getURL("javascript:setTimeout(window.location.reload,1000);" );

Krusty
09.11.2012, 12:06
Кстати я не в курсе, как setTimeout в яваскрипте относится к строке, а не к ссылке на функцию

Считается устаревшим, но работает. Но у вас не этот синтаксис, это опять же ссылка на функцию.

dark256
09.11.2012, 12:16
Оооочень страаанно это все..... В Хроме пашет в Мазиле - нет...

В результатет в обоих заработало это вот:

ExternalInterface.call( "setTimeout","window.location.reload()",1000 );

Но, черт возьми, Холмс.... Каким образом?

Добавлено через 2 минуты
maybe
window.location.reload(true);

Syntax
var retval = location.reload(flag);

Parameters
flag [in, optional]
Type: VARIANT_BOOL
Boolean that specifies one of the following possible values:
VARIANT_FALSE (false)
Default. Reloads the document from the cache.
VARIANT_TRUE (true)
Reloads the document from the server.

По идее и так и эдак релоад быть должен.... Мыргнуть она должна... Ан нет...

Krusty
09.11.2012, 12:21
Вы вызвали функцию setTimeout с двумя параметрами, один - это текстовая строка "window.location.reload()" , вторая - это 1000.
соответственно, превращается в
setTimeout("window.location.reload()",1000);
Это устаревший синтаксис ( в первом аргументе ожидается ссылка на функцию, а не строка - в этом случае неявно создается анонимная функция на основе строчки)
что дает нам
setTimeout( (function(){window.location.reload();}) ,1000);
что вполне рабочее

dark256
09.11.2012, 12:24
Аааа.... Дошло. Буду пробовать.

Krusty
09.11.2012, 12:38
По идее и так и эдак релоад быть должен.... Мыргнуть она должна... Ан нет...
По идее, кстати, нет. Если не требовать запроса к серверу - то, в соответствии с настройками, из кэша может быть взят документ без обращения к серверу, если он посчитает его валидным.
Короче, зависит от браузера и настроек на сервере.