JeuWeb - Crée ton jeu par navigateur
[Résolu][CoffeeScript] Function is not defined - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu][CoffeeScript] Function is not defined (/showthread.php?tid=5748)

Pages : 1 2 3


RE: [Résolu][CoffeeScript]Function is not defined - Maz - 16-10-2011

(16-10-2011, 03:01 PM)Sephi-Chan a écrit :
(16-10-2011, 02:52 PM)Maz a écrit : M'enfin, de toute manière maintenant je fait fasse à un autre problème, mais je vais pas en parler, on va dire que j'ai pas lu la doc Confusediffle:.

Avais-tu lu celle de CoffeeScript ? Smile

J'aime beaucoup aider les gens sinon je ne serais pas sur JeuWeb depuis tout ce temps. Seulement, c'est plus sympa d'aider les gens à régler de vrais problèmes, et pas seulement à compenser leur manque d'attention ou leur flemme de lire. Wink

Non je l'ai juste survoler pour savoir à quoi ça pourrais me servir, puis je me suis essayer au Try CoffeeScript. En revanche j'ai lu des pages et des pages de problème sur google pour essayer de résoudre le mien. C'est pas de "la flemme" que j'ai, c'est le manque de méthode. Je ne sais pas ou chercher (dans ce cas c'était la doc). Mais imagines, voici le problème que je rencontres:
alert "ping"
$ ->
alert "pong"

Je reçois le ping, mais pas le pong. Aucune erreur, jquery est bien inclus etc... Je ne sais même pas quoi taper sur google pour trouver une piste:pleure2:


RE: [Résolu][CoffeeScript]Function is not defined - Sephi-Chan - 16-10-2011

C'est encore dans le contexte d'inclusion dans un fichier SVG ?


RE: [Résolu][CoffeeScript]Function is not defined - Maz - 16-10-2011

Oui...

Code :
<%= ecmascript_include_tag "jquery" %>
<%= ecmascript_include_tag "jquery.svgdom" %>
<%= ecmascript_include_tag "map" %>



RE: [Résolu][CoffeeScript]Function is not defined - Sephi-Chan - 16-10-2011

Dans ce cas, la solution la plus simple semble être de ne pas mettre ton code dans le handler de jQuery, non ? Ça pose problème ?


RE: [Résolu][CoffeeScript]Function is not defined - Maz - 16-10-2011

Oui, j'ai besoin de faire des bind sur des éléments du DOM. Je peut esquiver ce problème en passant par live() (bien que j'arrives pas à le faire fonctionner non-plus mais c'est un autre problème(oui, encore...)). Mais j'aime pas esquiver les problèmes, car aujourd'hui je peut esquiver le bind par live, mais dans le futur j'aurais probablement besoin d'autre chose qui ne pourras pas être résolu aussi facilement.


RE: [Résolu][CoffeeScript]Function is not defined - niahoo - 16-10-2011

y a aussi le principe que les fonctions déclarées dans la page HTML n'existent pas au sein du SVG si celui-ci est inclus via <embed ou <object
(donc si tu l'inclus simplement en HTML5 ça compte pas)
Et l'inverse est vrai aussi, les fonctions du svg n'existent pas dans la page html

dans le svg l'exemple le plus simple (mais pas forcément super évolutif) est de déclarer les fonctions du javascript de la page

function get_something() {
return parent.get_something();
}

humen fait je sais pas si je dis pas des conneries, c'était valable y a 5 ans sans jquery ni coffeescript alors bon, à vérifier Smile


RE: [Résolu][CoffeeScript]Function is not defined - Maz - 16-10-2011

Mon SVG est inclus via <embed> mais le problème ne vient pas de là puisque tout ce que je fait depuis le début de ce post, est contenu dans le SVG.

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg externalResourcesRequired="true" width="500" height="500" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">

<%= ecmascript_include_tag "jquery" %>
<%= ecmascript_include_tag "jquery.svgdom" %>
<%= ecmascript_include_tag "map" %>

Je veut faire une animation totalement indépendante à la page qui l'inclus.


RE: [Résolu][CoffeeScript]Function is not defined - Sephi-Chan - 16-10-2011

Est-ce que tu es sûr que tes events listeners ne fonctionnent pas quand tu n'emballes pas ton code dans le handler ? Essaye également en mettant des balises script à la fin du document SVG (puisque le DOM est chargé quand on arrive à la fin du document).

Essaye également de remplacer ton code par :


alert "Foo"
$(document).ready ->
alert "Bar"

À l'évidence, ton contexte SVG change les règles du jeu, donc il faut essayer des choses différentes.


RE: [Résolu][CoffeeScript]Function is not defined - Maz - 16-10-2011

(16-10-2011, 03:39 PM)Sephi-Chan a écrit : Est-ce que tu es sûr que tes events listeners ne fonctionnent pas quand tu n'emballes pas ton code dans le handler ?

Pas compris.

J'ai essayer les deux pistes suivantes, aucune ne fonctionnes. Je suis tombé aussi sur ceci dans un coin de page du site officiel de jQuery SVG:
Citation :You can even use this plugin from within a standalone SVG document. After loading the jQuery and plugin code, you need an onload handler to initialise the SVG wrapper, passing it a reference to the root SVG element and an object providing the expected width and height. The example below shows all of this and draws a plus sign in the top-left corner of the canvas.

<svg onload="init(evt)" xmlns="http://www.w3.org/2000/svg" 
xmlns:xlink="http://www.w3.org/1999/xlink">
<script type="text/javascript" xlink:href="jquery-1.2.6.js"></script>
<script type="text/javascript" xlink:href="jquery.svg.js"></script>
<script type="text/javascript"><![CDATA[
var svgWrapper;

function init(evt) {
svgWrapper = new $.svg._wrapperClass(
evt.target.ownerDocument.documentElement,
{clientWidth: 500, clientHeight: 400});
svgWrapper.rect(40, 45, 50, 10);
svgWrapper.rect(60, 25, 10, 50);
}
// ]]>
</script>
<g>
</g>
</svg>

ça fonctionnes, j'ai fait quelques essais, jquery fonctionnes aussi(pas le ready), mais pas les fonctions bind et live sur des éléments svg (j'ai essayer avec une balise rect). Maintenant je vais essayer de mettre ça en place dans mon truc et j'utiliserais des onclick=""(beuark)

Edit: J'ai finalement réussi à faire fonctionner la fonction bind(pas live qui ne fonctionnes vraiment vraiment pas ,/) ça mériteras un tuto ça


RE: [Résolu][CoffeeScript] Function is not defined - Viciousity - 17-10-2011

Je suis pas un chieur mais c'est pas plus beau de faire un truc dans ce genre là (bon c'est une méthode mega basique, on peut faire nettement plus beau mais tu commences avec ruby donc je te fais du compréhensible ;P) :

module ApplicationHelper
def ecma_include_tag(sources, tags=[])
sources.each do |source|
path = ecma_path(source)
tags << "<script type=\"text/ecmascript\" xlink:href=\"#{path}\" />"
end
raw tags.join("\n")
end

def ecma_path(source)
javascript_path(source)
end
# BOOM tu peux utiliser un petit ecma_include_tag ["js1","js2", "js3"]
end