【问题标题】:javascript page source helpjavascript页面源帮助
【发布时间】:2011-03-13 21:47:55
【问题描述】:

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

【问题讨论】:

  • 我无法解析这个问题。你需要在哪里包含“所有的 HTML”?什么脚本“触发”了什么?电子邮件与此有什么关系?问题标题与问题有何关系?非常混乱。
  • 好的,在你的编辑之后它是有意义的 :-) 谢谢!!

标签: javascript ajax dom asynchronous


【解决方案1】:

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

我认为强制用户自己查看页面源会导致可用性不佳,而且使用正则表达式进行这些替换并不难。

【讨论】:

    【解决方案2】:

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

    可能会接近这个(但没有经过测试):

    var html = document.getElementById('whatever').innerHTML
      .replace(/&/g, '&')
      .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();
    

    edit — 如果你想去除脚本块,你可以在上面的系列中添加这个“替换”调用:

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

    这有点不稳定,因为通常尝试使用正则表达式识别 HTML 是不可能的。然而,由于脚本标签并不真正包含标记,并且肯定以下一个结束脚本标签结束,所以它比一般情况下可憎。

    【讨论】:

    • 效果很好有什么办法可以去掉源代码中显示的javascript吗?还有我用来调用你上面写的代码的输入按钮。
    • 好吧,如果您想要显示的源代码中混入了 Javascript - 或者,真的,您想要隐藏的 任何东西 - 那么事情就会变得有些棘手。我将修改我的答案,向您展示您可以隐藏脚本元素。 (不过,我想知道脚本块会在您的 HTML 电子邮件模板中间做什么。)
    • 它不在 HTML 的中间,而是在头部,它将重要的 CSS 保存到在他们的 CRM 中工作的模板中。因此为什么我需要删除它,谢谢你的帮助。
    猜你喜欢
    • 2012-03-10
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 2011-03-13
    • 1970-01-01
    相关资源
    最近更新 更多