PDA

Просмотр полной версии : getURL('javascript') - срабатывает некорректно


djyamato
15.01.2010, 19:59
Здравствуйте
Есть яваскрипт который открывает неблокируемый попап
если на странице создать ссылку при нажатии на которую запускается этот скрипт - все отлично - попап открывается а вот если из флэша использовать getURL - блокируется попап

P.S. скрипт взял отсюда http://www.htmlweb.ru/java/js.php

код флэшки

BTN.onPress=function(){
getURL('javascript:InWin("cookie.php");');
}


Код страницы

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=koi8-r" />
<title>getURL</title>
<script type="text/javascript" src="js/code.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="livejasmin.js"></script>
<script type="text/javascript" src="js.js"></script>
</head>
<body bgcolor="#ffffff">
<A Href="cookie.php" onclick='alert("this="+this);return InWin(this);' title="Пример использования Cookie на Java Script"><P class=ex>ОТСЮДА СРАБАТЫВАЕТ !!!</A>
<!--url's used in the movie-->
<!--text used in the movie-->
<!-- saved from url=(0013)about:internet -->
<div style="z-index: -1; width:520px; float:left; border-top:1px solid white; border-right:1px solid white; border-left:1px solid white;">
<object width="520" height="420" style="position:relative; z-index:1;">
<param name="movie" value="getURL.swf">
<embed src="getURL.swf" wmode="opaque" style="position:relative;" width="520" height="420" flashvars="file=instrument.flv"></embed>
</object>
</div>
</body>
</html>

Hauts
15.01.2010, 20:15
Используйте SWFObject для вставки флэшки на страницу.
Используйте ExternalInterface для работы с яваскриптом.


import flash.external.*
BTN.onPress=function(){
ExternalInterface.call("InWin", "cookie.php");
}


Тестируйте не локально.

djyamato
15.01.2010, 20:44
Используйте SWFObject для вставки флэшки на страницу.
Используйте ExternalInterface для работы с яваскриптом.


import flash.external.*
BTN.onPress=function(){
ExternalInterface.call("InWin", "cookie.php");
}


Тестируйте не локально.

Спасибо но пока все это не помогло.

Кстати - подскажите пожалуйста способ для AS3 - тоже ExternalInterface ?
И еще вопрос: в ДЕНВЕРЕ я могу тестировать считая что это не локально ?

Hauts
15.01.2010, 20:52
Насчет ас3 — не знаю, если честно.
Денвер — да, сойдет.

Сообразил. У вас там должен объект передаваться, со свойством href. А вы пытались просто строчку передать. Попробуйте так:

import flash.external.*
BTN.onPress=function(){
ExternalInterface.call("InWin", {href:"cookie.php"});
}


Или допишите в js.js функцию:

function InWinFromFlash(a){
return InWin({href:a});
}


И вызывайте ее, как я написал в прошлом сообщении.

djyamato
16.01.2010, 01:10
Не работает
К сожалению блокируются попапы вызванные из флэшки :( в ИЕ8
вот ссылка http://divisionby0.org/web_Portfolio/siddartha/AS3/getURL.html

добавил трассировку значений в код яваскрипта и в зависимости от способа запуска (нажатие на ссылку или вызов из флэша) разные значения


function InWin(a){
alert('a='+a+" a.href="+a.href);
if (a.href) a=a.href;
alert('making window');
jtop=window.open(a,'Пример', 'height=768,width=1024,location=no,toolbar=no,directories=no,menubar=no,status=yes,scrollbars=1,resizable=yes');
jtop.focus();
jtop.name='example';

return false;
}
function InWinFromFlash(a){
return InWin({href:a});
}



во флэше

ExternalInterface.call("InWinFromFlash", "http://divisionby0.org/web_Portfolio/siddartha/AS3/cookie.php");
/////////////////////////////////


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

Вот я думаю в чем причина- если нажать на кнопку которая уже есть на стэйдже то даже такой скрипт сработает

<script>
var openPopup = function (img) {
window.open(img, "picture", "menubar=0,resizable=1,width=680,height=790");
}
</script>


если вот так его из флэша запустить

b.onRelease = function () {
// если публикуется под флэш ниже восьмой версии, или под АС1 - оставить только getURL
if (ExternalInterface.available) {
ExternalInterface.call("openPopup", "testPage.html");
} else {
var Page='testPage.html';
getURL("javascript:openPopup('"+Page+"');void(null);");
}
}



И в ИЕ8 и в ФФ3 попап окно не блокируется

а вот если эту же кнопку/мувик изначально не иметь а аттачить ее из библитеки то ИЕ8 блокирует попап