Renvoi de Javascript avec PHP [Résolu] - PHP - Programmation
Marsh Posté le 02-04-2013 à 12:26:45
Déjà tu te mélanges les pinceaux dans les doubles et simples quotes
par exemple :
Code :
|
devrait être :
Code :
|
En gros :
-tu n'as pas besoin de double quote dans ce morceau de code (il n'y en a pas dans le code original en JS et tu te sert du simple quote pour délimiter ta chaîne de caractère.
- utilise \' quand il y a un simple quote dans le code original
- utilise ' lorsque tu veux utliser une variable php
Autre problème, tu fais 2 return ( 1 pour la fonction js l'autre pour le lien html). Sauf que par définition seul le premier sera exécuté.
Marsh Posté le 02-04-2013 à 13:26:51
Merci beaucoup, je teste dès maintenant, et je reviens juste après
Marsh Posté le 02-04-2013 à 13:37:00
C'est normal la balise <p> qui encapsule la balise <script>
Marsh Posté le 02-04-2013 à 13:52:39
OK, alors j'ai suivi tes conseils : plus de ", \' au lieu de ' en js, et plus de double return, ce qui donne :
Spoiler : return '<script>$(function() {$(\'#show\').avgrund({ |
Mais maintenant, nouveau problème :
Le code HTML s'écrit 2 fois au lieu d'une :
Spoiler : <p><script>$(function() {$('#show').avgrund({ |
Cependant, le lien apparaît bien qu'il n'aie pas d'effet
Marsh Posté le 02-04-2013 à 13:54:03
ReplyMarsh Posté le 02-04-2013 à 13:57:44
kilgourpa a écrit : @rufo : Euhh, non, la balise <p> n'encaspule pas <script>... |
Code :
|
Elles sont normales ces balises en gras
Marsh Posté le 02-04-2013 à 14:08:31
@rufo : Ahhhhh, pardon, j'avais pas vu. Alors non, elles ne sont pas normales, bien que ce soit exactement ce que je vois dans le code HTML.
Marsh Posté le 02-04-2013 à 14:09:31
On dirait que $title contient lui même le contenu de la fonction (et si tu regarde dans le dernier bout de code de ton premier poste, il était déjà en double)
Problème au niveau du php je pense
edit : en fait non, y a bien la balise fermante </a> juste après le "ca"
Marsh Posté le 02-04-2013 à 14:17:56
kilgourpa a écrit : @rufo : Ahhhhh, pardon, j'avais pas vu. Alors non, elles ne sont pas normales, bien que ce soit exactement ce que je vois dans le code HTML. |
Je fais remarquer ça parce qu'il y a pas longtemps, j'avais implémenté une extension pour Mediawiki essentiellement à base de Javascript et le parser de contenu de Mediawiki, afin de protéger le contenu du wiki (entre autre empêcher des failles xss), rajoutait des balises <p>, <br/> et <pre> et ça empêchait l'exécution correct de mon code js... Du coup, j'ai été obligé d'encadre mon code JS avec une balise "spécial" pour dire au parser de Mediawiki de pas parser mon code JS. Et là, ça a marché nickel...
Marsh Posté le 02-04-2013 à 14:41:31
@rufo : OK, mais malheureusement je n'ai aucune idée de ce qui provoque l'apparition des balise <p>
Marsh Posté le 02-04-2013 à 15:43:10
@x1fr : Yeeaahhh ! Merci ! Le problème de doublon disparaôt, ainsi que les balises <p> en trop & le fait que le content soit à l'extérieur du code JS. Cependant, il ne se passe rien quand je clique
Je cherche
Marsh Posté le 02-04-2013 à 16:52:54
@x1fr : Ça donne ça :
Spoiler : <script>$(function() {$('#show').avgrund({ |
Marsh Posté le 03-04-2013 à 08:54:15
Bon, alors comme je ne trouve pas, je met en résolu ici, et vais poster mon problème sur les forums de WordPress. En effet, je pense que le problème que je rencontre maintenant vient plutôt de WordPress que d'erreurs de code.
Alors merci BEAUCOUP à TOUS
PS: @x1fr : même en le remplissant, rien ne se passe lors du clic.
PS2 : Allez voir ici pour le topic sur le forum WordPress en anglais : http://wordpress.org/support/topic [...] ?replies=1
Marsh Posté le 02-04-2013 à 11:43:30
Bonjour à tous !
Alors voilà mon problème : je suis en train d'adapter Avgrund (http://labs.voronianski.com/jquery.avgrund.js/), un plugin jQuery pour faire des popups (allez voir sur la page et cliquez sur "SHOW IT" ) en un plugin WordPress.
En fait, on appelle le plugin WordPress avec un shortcode (http://codex.wordpress.org/Shortcode_API). Si vous vous y connaissez en shortcode WordPress, sachez que ce sera un enclosing shortcode avec les paramètres suivants : width (largeur du popup), title (titre du lien pour déclencher l'ouverture du popup), height (hauteur du popup) et openOnEvent (paramètre binaire (true ou false) qui indique s'il faut directement ouvrir le popup, ou bien attendre le clic).
Mais j'ai un problème (bon, vous l'aurez devinez vu que je suis là ) :
Le code qui pose problème, le voici :
// Now, we add the shortcode itself
function avgrund_shortcode( $atts , $content = null ) {
// Attributes
extract( shortcode_atts(
array(
'height' => '',
'width' => '',
'title' => '',
'openOnEvent' => 'true',
), $atts )
);
// Code
return '<script>$(function() {$(\'#show\').avgrund({
height="' . $height . '",
width="' . $width . '",
showClose=true,
holderClass="\'custom\'",
enableStackAnimation=true,
showCloseText: "\'Close\'",
openOnEvent:' . $openOnEvent . ',
onBlurContainer: "\'.container\'",
template: "<p>' . $content . '</p>"
});});</script>';
return '<a href="#" id="show" class="button left">' . $title . '</a>';
}
add_shortcode( 'avgrund', 'avgrund_shortcode' );
et plus particulièrement, cette partie :
return '<script>$(function() {$(\'#show\').avgrund({
height="' . $height . '",
width="' . $width . '",
showClose=true,
holderClass="\'custom\'",
enableStackAnimation=true,
showCloseText: "\'Close\'",
openOnEvent:' . $openOnEvent . ',
onBlurContainer: "\'.container\'",
template: "<p>' . $content . '</p>"
});});</script>';
return '<a href="#" id="show" class="button left">' . $title . '</a>';
Qui est en fait une version PHPisée de celui-ci :
<script>
$(function() {
$('#show').avgrund({
width: Ici va la variable width qui régie la largeur du popup,
height: Ici va la variable height qui régie la hauteur du popup,
holderClass: 'custom',
showClose: true,
showCloseText: 'Close',
openOnEvent: Ici va la variable openOnEvent qui régie l'ouverture du popup,
enableStackAnimation: true,
onBlurContainer: '.container',
template: '<p>La variable content (la partie entre le tag d'ouverture et celui de fermeture du shortcode)</p>' +
});
});
---------------------------------- et puis, plus loin dans le code ----------------------------------
<a href="#" id="show" class="button left">Ici va la variable title qui donne le nom du lien d'ouverture du popup</a>
</script>
Le problème étant que, lorsque je met le shortcode suivant :
[avgrund title=ca height=90 width=50]eflzrtzzyvjthicb[avgrund]
le résultat HTML est comme ceci :
<p><script>$(function() {$('#show').avgrund({
height="90",
width="50",
showClose=true,
holderClass="'custom'",
enableStackAnimation=true,
showCloseText: "'Close'",
onBlurContainer: "'.container'",
template: "<p></p>"
});});</script>eflzrtzzyvjthicb<script>$(function() {$('#show').avgrund({
height="",
width="",
showClose=true,
holderClass="'custom'",
enableStackAnimation=true,
showCloseText: "'Close'",
onBlurContainer: "'.container'",
template: "<p></p>"
});});</script></p>
Ce qui ne ressemble à rien , et n'a d'autre effet qu'afficher "eflzrtzzyvjthicb" .
Ouate de phoque ????
Merci d'avance !
Message édité par kilgourpa le 03-04-2013 à 08:54:44