Salut à tous !
Alors voilà, j'ai suivi le Tuto Création d'un BBCode et aperçu en direct proposé dans la section, Vos Tutos afin de faire la même chose sur la nouvelle version de mon site, toujours en développement.
Alors, j'adapte le script à mes besoins, etc ...
Mais voilà, tout fonctionne correctement sous Mozilla Firefox
Petit bémol, rien ne fonctionne sous Internet Explorer
Pour être plus précis, seul la prévisualisation en direct de ce qu'on écrit ne fonctionne pas sous IE ...
Voici mes deux pages : L'une contient le formulaire avec le div de prévisualisation et l'autre est la page prev.js à inclure entre <head></head> ...
<html>
<head> <title></title> <scriptlanguage="javascript"type="text/javascript"src="<? echo $path; ?>includes/prev.js"></script><!-- on appelle le fichier prev.js pour faire fonctionne la prévisualisation --> <script language="Javascript"> <!--
function bbcode(bbdebut, bbfin)
{
var input = window.document.form.contenu;
input.focus();
/* pour IE (toujous un cas appar lui )*/
if(typeof document.selection != 'undefined')
{
var range = document.selection.createRange();
var insText = range.text;
range.text = bbdebut + insText + bbfin;
range = document.selection.createRange();
if (insText.length == 0)
{
range.move('character', -bbfin.length);
}
else
{
range.moveStart('character', bbdebut.length + insText.length + bbfin.length);
}
range.select();
}
/* pour les navigateurs plus récents que IE comme Firefox... */
else if(typeof input.selectionStart != 'undefined')
{
var start = input.selectionStart;
var end = input.selectionEnd;
var insText = input.value.substring(start, end);
input.value = input.value.substr(0, start) + bbdebut + insText + bbfin + input.value.substr(end);
var pos;
if (insText.length == 0)
{
pos = start + bbdebut.length;
}
else
{
pos = start + bbdebut.length + insText.length + bbfin.length;
}
input.selectionStart = pos;
input.selectionEnd = pos;
}
/* pour les autres navigateurs comme Netscape... */
else
{
var pos;
var re = new RegExp('^[0-9]{0,3}$');
while(!re.test(pos))
{
pos = prompt("insertion (0.." + input.value.length + "):", "0");
}
if(pos > input.value.length)
{
pos = input.value.length;
}
var insText = prompt("Veuillez taper le texte");
input.value = input.value.substr(0, pos) + bbdebut + insText + bbfin + input.value.substr(pos);
}
}
function smilies(img, textarea)
{
window.document.form.textarea.value += '' + img + '';
}
--> </script> </head>
if (isset($_POST['envoi']) &&
isset($_POST['id_recepteur']) &&
isset($_POST['MP_titre']) &&
isset($_POST['contenu'])) {
if ($_POST['id_recepteur'] != NULL &&
$_POST['MP_titre'] != NULL &&
$_POST['contenu'] != NULL) {
// On créé des variables anti-html
$id_envoyeur = $_SESSION['id'];
$id_recepteur = $_POST['id_recepteur'];
$MP_titre = htmlentities($_POST['MP_titre']);
$contenu = htmlentities($_POST['contenu']);
// On ajoute le message dans la table
mysql_query("INSERT INTO `messages_prives` VALUES('', '$id_envoyeur', '$id_recepteur', '$MP_titre', '$contenu', '" . time() . "', '0') ") or die (mysql_error());
// Message afin de dire que le message a bien été envoyé
echo ('
<div align="center" style="font-size:10px; color:#00CC00; text-decoration:underline; font-weight:bold; width:300px; padding:10px; border-style:dashed; border-width:1px; background-color:#D8F1D8; margin:auto;">
Votre message privé a été envoyé avec succès.<br /><a href="' . $path . 'membres/membre.php?page=messagerie">Revenir à votre boîte de réception.</a> </div>');
}
else
{
echo 'Il manque des informations primordiales pour l\'envoi de votre message privé.';
$erreur = true;
}
}
var timer=0; var ptag=String.fromCharCode(5,6,7); function previsualisation(){
t=document.form.contenu.value
t=code_to_html(t) if(document.getElementById) document.getElementById("prev").innerHTML=t if(document.form.auto.checked) timer=setTimeout(previsualisation,1)
<!-- le "1" est le temps que met le texte à s'afficher, "1" : le texte s'affichera en même temps que l'on écrit (en s) -->
}
function automatique() {
if (document.form.auto.checked) previsualisation() <!-- si on a cocher la case d'aperçu automatique --> } function code_to_html(t){
t=nl2khol(t) // balise Gras <!-- on lui dis que telles balises correspondent à tels codes en HTML -->
t=deblaie(/(\[\/gras\])/g,t)
t=remplace_tag(/\[gras\](.+)\[\/gras\]/g,'<span style="font-weight: bold;">$1</span>',t)
t=remblaie(t)
// smilies Smile <!-- on oublie pas les smilies -->
t=remplace_tag(/:D/g,'<img src="http://www.maxjeuxvideo.info/img/smilies/icon_biggrin.gif" alt=":D" title=":D" />',t)
t=remblaie(t)
t=unkhol(t)
t=nl2br(t) return t }
<!-- tout le code qui suit c'est pour transformer toutes les balises, comme les preg_replace en PHP -->
function deblaie(reg,t) {
contenu=new String(t);
return contenu.replace(reg,'$1\n');
}
function remblaie(t) {
contenu=new String(t);
return contenu.replace(/\n/g,'');
}
function remplace_tag(reg,rep,t) {
contenu=new String(t);
return contenu.replace(reg,rep);
}
function nl2br(t) {
contenu=new String(t);
return contenu.replace(/\n/g,'<br/>');
}
function nl2khol(t) {
contenu=new String(t);
return contenu.replace(/\n/g,ptag);
}
function unkhol(t) {
contenu=new String(t);
return contenu.replace(new RegExp(ptag,'g'),'\n');
}
Message d'erreur sous IE :
Citation : Erreur Internet Explorer
Ligne : 86
Car : 1
Erreur : Cet objet ne gère pas cette propriété ou cette méthode
Code : 0
URL : (L'url de ma page)
Voilà ... Etant une quille en JS, et avoir fait plusieurs recherches/tests pour essayerde résoure mon problème, j'en viens à vous ... Pouvez-vous m'aider ?
Un petit UP
Vous ne voyez vraiment pas comment y remédier ?
Merci d'avance.
Lelexso
[JS] Marche sous FF, foire sous IE ...
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.