2010-08-02 8 views
3

Je crois que cela peut être lié à Need Pure/jQuery Javascript Solution For Cleaning Word HTML From Text Areacôté client code Javascript à bande HTML bogus de CKEditor

Mais dans mon cas, je suis en utilisant CKEditor; Cependant, avant d'envoyer les données au serveur (ou après l'avoir reçu), j'aimerais supprimer les balises et les commentaires HTML «indésirables» tels que ceux qui apparaissent lors du collage de versions récentes (2007 ou ultérieures) de Microsoft Office. Parce que le côté serveur est ici une application tierce, je préférerais faire ce côté client si je le peux. Oui, je suis conscient des risques de sécurité liés à cela; Ceci est juste destiné à assainir les données dans les cas d'utilisation courants.

Existe-t-il des techniques courantes ou des bibliothèques existantes (en particulier jQuery) qui peuvent faire cela? Remarque, je ne cherche pas à encoder ou dépouiller tous HTML, seulement le crud Office-connexes.

+0

Faut-il que ce soit Javascript? Ajaxing un script côté serveur serait-il une option? Si oui, quelle plateforme? –

+0

Ceci est en fait en utilisant un client Jabber, il devrait donc être fait comme un plugin à notre serveur Jabber, auquel cas ce serait Java. Mais pour des raisons logistiques, je préférerais fortement une solution Javascript côté client. – Dan

Répondre

3

Avez-vous essayé CKEditor construit dans la fonctionnalité de nettoyage de Word? Il semble être exécuté automatiquement lors de l'utilisation de la boîte de dialogue "Coller depuis Word", mais peut également être utilisé à partir de votre code. Je ne suis pas un expert sur l'API CKEditor, donc il pourrait y avoir un moyen plus efficace ou correcte de le faire, mais cela semble fonctionner sur la version actuelle (3.3.1):

function cleanUp() { 

    if (!CKEDITOR.cleanWord) { 
     // since the filter is lazily loaded by the pastefromword plugin we need to add it ourselves. 
     // We use the same function as the callback for when the cleanup filter is loaded. Change the script path to the correct one 
     CKEDITOR.scriptLoader.load("../plugins/pastefromword/filter/default.js", cleanUp, null, false, true); 
     alert('loading script for the first usage'); 
    } else { // The cleanWord is available for use 

     // change to the correct editor instance 
     var editor = CKEDITOR.instances.editor1; 
     // perform the clean up 
     var cleanedUpData = CKEDITOR.cleanWord(editor .getData(), editor); 

     // do something with the clean up 
     alert(cleanedUpData); 
    } 
} 

cleanUp(); 

Si vous vous n'êtes pas satisfait de ce nettoyage, vous pouvez modifier default.js pour vos besoins de nettoyage. Certaines options de configuration sont disponibles pour le nettoyage, cochez la case http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html (recherchez les options "pasteFromWord").

Si vous avez besoin de quelque chose de plus avancé, mais qui nécessitera un accès au serveur, je vous suggère de vérifier WordOff (http://wordoff.org/). Vous pourriez être en mesure de construire un proxy et un wrapper jsonp autour de leur service afin de pouvoir l'utiliser depuis le client sans installation de serveur.

Questions connexes