Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

play() n'est pas une fonction

15 réponses
Avatar
ppellero
Bonjour,
Avec ce petit script je d=E9clanche un son en passant sur une image et il=
=20
s'arr=EAte quand la souris quitte l'image.

Ca marche avec IE7(pour une fois!!!) avec Google chrome et Safari4
mais pas avec Firefox :(
Les fonctions PLay() et Stop() ne sont pas reconnues par Mozilla.
La console renvoie l'erreur fichson.Play() is not a function.

Comment pourrais-je faire pour l'accommoder =E0 la sauce Firefox?

<script type=3D"text/javascript">
function EvalSound(soundobj) {
var fichson=3D eval("document."+soundobj);
fichson.Play();
}
function StopSound(soundobj) {
var fichson=3D eval("document."+soundobj);
fichson.Stop();
}
</script>
Merci de votre attention

Paul
--=20
Paul Pellero Agay (Var)=09
mailto:paulpellero@wanadoo.fr
Site: http://www.pellero.net

5 réponses

1 2
Avatar
ppellero
Pascal PONCET a écrit :
SAM a écrit :
c'est koi cette page qui joue au yoyo en attendant d'enfin de se fixer
pour me mettre un panonceau qui me bouche la vue et que je ne puis fer mer ?
(Mac et Fx.3 + ADSL 4Mbits)
Y sont dingues ? une page d'au moins 725 hauteurs d'écran.



C'est dommage, d'ailleurs, parce que l'idée de suivre l'évolution p our
chaque implémentation n'est pas mauvaise.
Mais le yoyo a failli planter mon FF3/WinXP, comme j'avais déjà un
script qui tournait sur un autre onglet !

Pascal



Bon, là je suis complètement largué dans vos discussion.
Ce que j'ai retenu c'est qu'il n'y a pas une seule norme audio et qu'il
faut jongler avec les différents navigateur.
Peut être le flash est plus universel car employé dans beaucoup
d'application?
Paul


--
Paul Pellero Agay (Var)
mailto:
Site: http://www.pellero.net
Avatar
SAM
Le 4/20/09 8:19 PM, ppellero a écrit :
Pascal PONCET a écrit :
SAM a écrit :
c'est koi cette page qui joue au yoyo en attendant d'enfin de se fixer
Y sont dingues ? une page d'au moins 725 hauteurs d'écran.



C'est dommage, d'ailleurs, parce que l'idée de suivre l'évolution pour
chaque implémentation n'est pas mauvaise.
Mais le yoyo a failli planter mon FF3/WinXP, comme j'avais déjà un
script qui tournait sur un autre onglet !



Bon, là je suis complètement largué dans vos discussion.



On discute là de la page proposée par Laurent,
de son volume et sa propension à planter Fx (et peut-être d'autres?)

Sinon pour rester dans le, ou revenir au, sujet :
on y nous promet pour 2015/2020 l'implémentation généralisée d'une
balise 'audio' (au lieu de object ou embed) qui va mettre au rebut et IE
et Flash ... !

à ce que j'ai compris ;-)

Ce que j'ai retenu c'est qu'il n'y a pas une seule norme audio et qu'il
faut jongler avec les différents navigateur.



et que la balise 'audio' pourrait déjà fonctionner dans Safari
(version >= 4 je suppose ?)
et que la balise 'audio' devra être capable de jouer à minima un son wave

Peut être le flash est plus universel car employé dans beaucoup
d'application?



Flash est plus universel parce qu'il fonctionne bien et que 96% des gens
l'auraient installé sur leur ordi (enfin ... c'est ce qui se raconte).

Pour en revenir au dernier code que tu as trouvé, et si de ne pas passer
le vaidator W3C n'est pas un handicap, ça a l'air de bien fonctionner
(chez moi: Safari.3, Fx.3, IE 6&7 XP SP2).
Le Play joue le son
Le Stop arrête le son
sauf avec mon Safar et Fx qui se servent de QT et où Stop fait Pause
(au re-Play le son reprend là où il s'est arrêté)

Pour revenir au début c'est : thissound.Rewind();


Pas trouvé de réelle amélioration à apporter si ce n'est de fixer la
taille de l'embed à 1px minimum pour que mon Fx puisse s'en servir.
Ma tentative de créer l'embed par JS puis de l'appender (pour flouser le
W3C) n'a pas fonctionné :
- Safari et Fx jouent le son de l'embed appendChildé par JS
(bien que l'autoplay y soit à false)
- IE est perdu
(ne semble pas retrouver l'embed nouveau).


Voilà qui, à la satisfaction du W3C, fonctionne chez moi (mais touj pas
avec Opera qui joue le son à l'ouverture) :

<script type="text/javascript">

function getObj(obj) {
return eval("document."+obj);
}
function playIt(objNom) { getObj(objNom).Play(); }
function stopIt(objNom) {
var leson = getObj(objNom);
leson.Stop();
if(leson.Rewind) leson.Rewind();
}
document.write('<embed src="CHORD.wav" autostart="false" '+
'autoplay="false" width="1" height="1" ' +
'name="sound2" enablejavascript="true">');
</script>

</head>
<body>

<p><img src="1.gif" style="cursor:pointer" alt=""
onmouseover="playIt('sound2')"
onmouseout="stopIt('sound2');">

(en html.4.01 strict)

--
sm
Avatar
Cenekemoi
"ppellero" a écrit dans le message de
news:49e9b680$0$17745$
(...)
Est-ce un bon code?

[code]
<script type="text/javascript">

function EvalSound(soundobj) {
var thissound= eval("document."+soundobj);
thissound.Play();
}

function StopSound(soundobj) {
var thissound= eval("document."+soundobj);
thissound.Stop();
}

</script>
(...)



Juste un détail : en javascript, l'écriture "objet.propriété" peut
s'écrire "objet['propriété']" !

En conséquence, il est plus propre (et plus lisible) d'éviter le "eval"
et d'écrire :

function EvalSound(soundobj) {
var thissound = document[ soundobj ];
thissound.Play();
}

function StopSound(soundobj) {
var thissound = document[ soundobj ];
thissound.Stop();
}

--
Cordialement, Thierry ;-)
Avatar
SAM
Le 4/27/09 10:46 AM, Cenekemoi a écrit :
"ppellero" a écrit dans le message de
news:49e9b680$0$17745$

Juste un détail : en javascript, l'écriture "objet.propriété" peut
s'écrire "objet['propriété']" !



Toutafé.

En conséquence,


(...)

de toutes façons maintenant j'en suis là :

<script type="text/javascript">

var monSon = 'success.wav';

function getObj(obj) { return document.getElementById(obj); }
function playIt(objId) {
var son = getObj(objId);
if(typeof son.Play == 'undefined')
return soundOp('success.wav',objId);
son.Play();
}
function stopIt(objId) {
var son = getObj(objId);
if(typeof son.Stop == 'undefined') return soundOp('',objId);
son.Stop(); // that pause with my QT plugin
if(son.Rewind) son.Rewind(); // so we rewind the sound
}
function soundOp(soundFile, soundId) {
var t = getObj(soundId),
s = t.cloneNode(true);
s.src = soundFile;
document.body.replaceChild(s,t);
s=null;
return false;
}
document.write('<embed src="'+
(navigator.appName=='Opera'? '':monSon)+
'" autostart="false" autoplay="false" width="1" '+
'height="1" id="sound2" enablejavascript="true">');
window.onload = function() {
var i = typeof document.images != 'object'? document.images[0] :
document.getElementsByTagName?
document.getElementsByTagName('IMG')[0] :
alert('error images collection');
i.onmouseover = function() { playIt('sound2') };
i.onmouseout = function() { stopIt('sound2'); };
i.style.cursor = 'pointer';
}
</script>

</head>
<body>
<p><img src="sam.jpg" alt="">


--
sm
Avatar
ppellero
> de toutes façons maintenant j'en suis là :

<script type="text/javascript">

var monSon = 'success.wav';

function getObj(obj) { return document.getElementById(obj); }
function playIt(objId) {
var son = getObj(objId);
if(typeof son.Play == 'undefined')
return soundOp('success.wav',objId);
son.Play();
}
function stopIt(objId) {
var son = getObj(objId);
if(typeof son.Stop == 'undefined') return soundOp('',objId);
son.Stop(); // that pause with my QT plugin
if(son.Rewind) son.Rewind(); // so we rewind the sound
}
function soundOp(soundFile, soundId) {
var t = getObj(soundId),
s = t.cloneNode(true);
s.src = soundFile;
document.body.replaceChild(s,t);
s=null;
return false;
}
document.write('<embed src="'+
(navigator.appName=='Opera'? '':monSon)+
'" autostart="false" autoplay="false" width="1" '+
'height="1" id="sound2" enablejavascript="true">') ;
window.onload = function() {
var i = typeof document.images != 'object'? document.images[0] :
document.getElementsByTagName?
document.getElementsByTagName('IMG')[0] :
alert('error images collection');
i.onmouseover = function() { playIt('sound2') };
i.onmouseout = function() { stopIt('sound2'); };
i.style.cursor = 'pointer';
}
</script>

</head>
<body>
<p><img src="sam.jpg" alt="">




Merci pour ce script il va me falloir un certain temps (comme le fut du
canon) pour bien le comprendre et le mettre en application.
Je reviendrais vers vous pour plus d'information... :-)

--
Paul
1 2