javascript页面源帮助

时间:2010-07-09 14:13:04

标签: javascript ajax dom asynchronous

目前我正在为用户编写一个系统,在填写表单时,它会为能够与他们的CRM系统一起使用的HTML电子邮件创建模板,问题是您的用户有点温顺,而且他们的生活无法理解如何查看页面的来源,以便他们可以将模板代码复制并粘贴到他们的CRM中,我想要的是能够有一个用户可以点击的链接/按钮,它将显示来源在窗口中的代码,我现在是一个javascript开发人员所以任何提示,提示示例都会很棒。

2 个答案:

答案 0 :(得分:1)

你可能想做这样的事情:抓住包含模板HTML(或其他任何东西)的元素的“innerHTML”。然后打开一个新窗口并将HTML放入其中,并被<pre>块包围。您还希望用适当的HTML实体替换所有重要的标记字符,并可能用<br>元素替换换行符。

它可能接近于此(但未经测试):

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();

编辑 - 如果要删除脚本块,可以将此“替换”调用添加到上面的系列中:

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

这有点不稳定,因为通常尝试用正则表达式识别HTML是不可能的。但是,由于脚本标记实际上并不包含标记,并且肯定以下一个结束脚本标记结束,因此它不像一般情况那样令人厌恶。

答案 1 :(得分:0)

我认为这里的最佳做法并不是真正使用Javascript技巧,而是将HTML模板复制到可见部分并替换“&lt;”用“&amp; lt;”,“&gt;”用“&amp; gt;” (根据需要转义其他位)。

我认为,强迫用户自己查看页面源的可用性很差,并且使用正则表达式进行这些替换并不困难。