Nesting quotes in JavaScript/HTML

后端 未结 4 738
青春惊慌失措
青春惊慌失措 2020-11-27 19:11

How do you nest quotes in HTML beyond the second level? As far as I know, there are only 2 types of quotes - single(\') and double(\"). I am aware of escaping using slashes

相关标签:
4条回答
  • 2020-11-27 19:51

    Edit: this is not a solution for JavaScript in HTML, but for JavaScript only. My bad...

    eval('eval(\"eval(\\\"alert(\\\\\\\"Now I\\\\\\\\\\\\\\\'m confused!\\\\\\\")\\\")\")');
    

    Link. It's "recursive escaping".

    0 讨论(0)
  • 2020-11-27 19:52

        const _advanceEscapeCount = (escapeCount, level) => {
          const linearPosition = Math.log(escapeCount + 1) / Math.log(2);
          return Math.pow(2, (linearPosition + level)) - 1;
        };
    
        const deepNestQuotes = (str, level) => {
          for (let i = str.length - 1; i >=0 ; i--) {
    
            if (str[i] === '"') {
    
              const index = i;
              let count = 0;
              while (str[i - 1] === '\\') {
                count++;
                i--;
              }
    
              const firstPart = str.substr(0,index - count);
              const lastPart = str.substr(index,str.length);
    
              const escapedCount = _advanceEscapeCount(count, level);
              str = firstPart +  '\\'.repeat(escapedCount) + lastPart;
              //str = firstPart +  escapedCount + lastPart;
            }
          }
    
          return str;
        };
    
    
    
        deepNestQuotes("1st-level-begin \"2nd-begin   \\\"3rd-begin  \\\\\\\"4th level\\\\\\\"   3rd-end\\\"   2nd-end\" 1st-level-end", 1);
    
        deepNestQuotes("1st-level-begin \"2nd-begin   \\\"3rd-begin  \\\\\\\"4th level\\\\\\\"   3rd-end\\\"   2nd-end\" 1st-level-end", 2);

    0 讨论(0)
  • 2020-11-27 20:03

    You need to use proper escaping/encoding. Either in HTML using character references:

    <p onclick="exampleFunc('&lt;div id=&quot;divId&quot;&gt;&lt;/div&gt;');">Some Text</p>
    

    Or in JavaScript using string escape sequences:

    <p onclick="exampleFunc('\x3Cdiv\x20id\x3D\x22divId\x22\x3E\x3C/div\x3E');">Some Text</p>
    
    0 讨论(0)
  • 2020-11-27 20:04

    you need to escape the characters using the \

    so your code should look like

    <p onclick="exampleFunc('<div id=\"divId\"></div>');">Some Text</p>
    

    Here is some info on Special Characters

    0 讨论(0)
提交回复
热议问题