2010-07-09 3 views
0

Actuellement j'écris un système pour un utilisateur qui en remplissant un formulaire crée un modèle pour un email de HTML qui pourra employer avec leur système de CRM, le problème est que votre utilisateur est un peu docile et pour le live d'eux ne peut pas comprendre comment afficher la source de la page afin qu'ils puissent copier et coller le code de modèle dans leur CRM, ce que je veux est là pour pouvoir avoir un lien/bouton que l'utilisateur peut cliquer montrera le code source dans une fenêtre, je suis maintenant un développeur javascript de sorte que tous les conseils, des conseils indices seraient super.javascript aide de source de page

+1

Je ne peux pas analyser cette question. Vous devez inclure "tout le HTML" où? Quel script "allume" quoi? Qu'est-ce que l'email a à voir avec ça? Et comment le titre de la question se rapporte-t-il à la question? Très perturbant. – Pointy

+0

OK, après vos modifications, il est logique :-) Merci! – Pointy

Répondre

1

Eh bien, vous voulez probablement faire quelque chose comme ceci: prenez le "innerHTML" de l'élément contenant votre modèle HTML (ou quoi que ce soit). Ensuite, ouvrez une nouvelle fenêtre et déposez le code HTML, entouré d'un bloc <pre>. Vous souhaiterez également remplacer tous les caractères de balisage importants par des entités HTML appropriées et remplacer probablement les nouvelles lignes par des éléments <br>.

Il serait probablement proche de cette (mais il n'a pas été testé):

var html = document.getElementById('whatever').innerHTML 
    .replace(/&/g, '&amp;') 
    .replace(/</g, '&lt;') 
    .replace(/>/g, '&gt;') 
    .replace(/\r?\n/g, '<br>'); 

var w = window.open('', 'SourceWindow', 'height=500,width=600'); 
var d = w.document.open(); 
d.write('<html><body><pre>' + html + '</pre></body></html>'); 
d.close(); 

modifier — si vous souhaitez supprimer des blocs de script, vous pouvez ajouter ce « remplacer » appel à la série ci-dessus :

.replace(/<\s*script[^>]*>.*?<\/\s*script[^>]*>/g, '') 

C'est un peu fragile parce qu'en général essayer de reconnaître le HTML avec une expression régulière n'est pas vraiment possible. Cependant, étant donné que les balises de script ne contiennent pas vraiment de balisage et se terminent définitivement avec la prochaine balise de script de fermeture, c'est moins odieux que le cas général.

+0

Cela fonctionne bien est-il possible de supprimer le javascript qui apparaît dans la source? Et aussi le bouton de saisie que j'utilise pour appeler le code que vous avez écrit ci-dessus. –

+0

Eh bien, s'il y a du Javascript mélangé avec la source que vous voulez montrer - ou, vraiment, * n'importe quoi * que vous voulez cacher - alors les choses deviennent un peu plus compliquées. Je vais ammend ma réponse pour vous montrer que vous pouvez cacher des éléments de script. (Je dois me demander ce que les blocs de script feraient au milieu de votre modèle d'email HTML, cependant.) – Pointy

+0

il n'est pas au milieu du HTML il est dans la tête, qui tient le CSS essentiel au modèle fonctionnant dans leur CRM . C'est pourquoi j'ai besoin de l'enlever, merci pour votre aide. –

0

Je pense que la meilleure pratique n'est pas vraiment ici pour utiliser une astuce Javascript, mais pour copier le modèle HTML dans une section visible et remplacer « < » par « & lt; », « > » avec "& gt; " (échapper d'autres bits au besoin). Je dirais que cela rend la facilité d'utilisation pour forcer un utilisateur à voir la source de la page elle-même, et il n'est pas difficile d'utiliser regex pour faire ces remplacements.