【问题标题】:HTML:Use quotes within quotes within quotesHTML:在引号内使用引号内的引号
【发布时间】:2013-11-19 15:26:00
【问题描述】:

我被这个问题困住了:

<body onload="document.body.innerHTML="<script>alert('hi')</script>"">

问题是我不能在引号内的引号内使用引号。 有什么想法吗?

【问题讨论】:

  • 字符串中的简单转义不起作用吗?
  • @Keshi — 定义“简单转义”。
  • 这样做你打算解决什么问题?
  • 即使你解决了引用问题,代码也不会做任何事情。当您设置 innerHTML 时,浏览器不会评估脚本内容。

标签: javascript html string quotes double-quotes


【解决方案1】:

要在由" 字符分隔的HTML 属性中表示" 字符,请使用实体&amp;quot;

我推荐attaching event listeners using JavaScript,而不是使用内在事件属性。它大大简化了事情。

但是请注意,browsers will not execute JavaScript added to the document with innerHTML。如果您想以编程方式添加脚本,请使用 createElement / appendChild 等。

【讨论】:

    【解决方案2】:
    <body onload='document.body.innerHTML="<script>alert(\"hi\")</script>"'>
    

    <body onload="document.body.innerHTML='<script>alert(\'hi\')</script>'">
    

    它确实有效,但是脚本没有被执行,因为它是在浏览器解析你的代码之后添加的。

    请注意,如果您想要引号内的引号内的引号内的引号,您会这样做:&lt;body onload="document.body.innerHTML='&lt;script&gt;alert(\'\\\'hi\\\'\')&lt;/script&gt;'" &gt;

    没有&amp;quot; 真正不可能的(我认为)是将"' 放入警报中。

    【讨论】:

      【解决方案3】:

      您可以使用反引号 (`)、单引号和双引号的组合。

      代码:

      <body onload="document.body.innerHTML=`<script>alert('hi')</script>`">
      

      【讨论】:

        【解决方案4】:

        啊!首先,不要那样做。 :D

        类似:

        <body></body>
        
        <script>
            window.onload = function () {
                document.body.innerHTML = "<script>alert('hi')</script>";
            }
        </script>
        

        。 . .会更好。也可以考虑一些 JQuery 解决方案。

        即使是那种特定的方法,我也不推荐,但我怀疑您只是在测试如何在页面加载后向 HTML 正文添加内容,而不是真正想要使用 alert()。 ;) 如果是这种情况,请尝试以下操作:

        <body></body>
        
        <script>
            window.onload = function () {
                document.body.innerHTML = "some text";
                alert('hi'); // if you really want to test that the JS is working after load.
            }
        </script>
        

        【讨论】:

        • 这根本没有解决“在引号中使用引号”的问题
        • @InsOp - 有时问题标题仅捕获问题的一部分或查看问题的一种方式。原始问题中提供的代码不仅仅是“在引号中使用引号”的问题。 . . OP 试图实现特定的功能,而多层次的引用导致他的方法出现问题。解决他的问题的几种方法之一是删除导致需要所有这些引号层的逻辑(我记录的方法)。它可能没有回答标题中的问题,但它确实解决了他的问题。
        • 可以清楚地看到这是一个简化的示例,因此我们可以准确解决“在引号中使用引号”的问题
        • @InsOp - 只是按照网站指南的建议进行操作:“仔细阅读问题。具体来说,问题是什么?确保你的答案提供了 - 或可行的替代方案。答案可以是“不要那样做”,但也应该包括“试试这个”。任何让提问者朝着正确方向前进的答案都是有帮助的,但请尝试在你的答案中提及任何限制、假设或简化。简洁是可以接受的,但更全面的解释会更好。”其他人试图帮助 OP 正确使用引号,我试图帮助他根本不必使用它们。
        猜你喜欢
        • 2015-01-14
        • 1970-01-01
        • 2012-02-21
        • 2013-09-24
        • 2014-01-22
        • 1970-01-01
        • 2018-04-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多