JavaScript HERE-doc还是其他大型引用机制?

Eva*_*oll 21 javascript quotes heredoc

有没有一种方便的方法来引用在JavaScript中同时包含单引号和双引号的大块HTML?

有什么像HERE-doc <<EOF,多引号字符"""或自定义分隔符q{}

这个问题的任何创造性或创造性解决方案

Poi*_*nty 20

有些人不喜欢这样,所以要为鄙视和嘲笑做好准备,但有一个诀窍就是把你的"大块东西"扔进一个<script language="text">街区:

<script id='blockOfStuff' language="text">
  Hi this is random stuff
  <h1>Including HTML markup</h1>
  And quotes too, or as one man said, "These are quotes, but
  'these' are quotes too."
</script>
Run Code Online (Sandbox Code Playgroud)

John Resig使用这种技术(或者如果你愿意,那种可憎的)用于他的模板机制的例子.

您可以根据需要使用"innerText"或"innerHTML"获取内容,也可以通过您喜欢的框架的服务获取内容.

编辑 -请注意,通过jQuery(相反的是我在下面留言说).text()工作,但我认为它应该.请.html()改用.

  • ++,我很开心.我甚至都没有被冒犯.虽然在这种情况下出于搜索引擎优化的原因,我宁愿不在html中使用文本块(因为动态操作正在使其发挥作用,它不是默认适用于页面). (2认同)

Mad*_*aks 9

本机不支持.

但是既然我们正在谈论使其发挥作用的方法,那么(根据我的经验)这样做:

<script type="text/javascript">  

    var name = "Mud";

    var str = "\
        My name is " + name + "\
        not to be confused with Bill\
        or Jack or Pete or Dennis\
        my name is " + name + " and it's always been\
    ";

    alert("Les'n one: " + str);

</script>
Run Code Online (Sandbox Code Playgroud)

那些反斜杠可以解决问题.只需确保反斜杠 - 转义字符串中的任何双引号,因为整个块都是用它们引用的.

请注意,这不会保留换行符,您必须在每行尾随斜杠之前将它们手动插入为"\n".另一方面,每行开头的任何空格缩进都将包含在输出中.

当你必须在脚本中声明一个长的多行字符串(例如XML)时,这真的很有效,当你需要保持那个字符串的格式与你定义的方式完全一致时,效果不是很好.

干杯


Jak*_*kob 4

JavaScript 无法做到这一点,但CoffeeScript(JavaScript 之上的一个薄层)可以做到。

点击链接并向下滚动到“多行字符串和此处文档”。