Javascript 添加动态 HTML 的字符串问题

发布于 2024-11-15 01:17:52 字数 894 浏览 3 评论 0原文

我正在使用 PHP 生成一个 Javascript 按钮,该按钮添加了一个复选框和一些其他 HTML。

转义这些字符以将它们包含在 onclick 事件中的正确方法是什么?

我看到它建议将 ' 和 " 转换为 ascii 值,但这似乎没有帮助。

$tempOutput = "<a href='temp.txt'>\"Happy\"</a>";
$tempOutput = str_replace("'", "&#39;", $tempOutput);
$tempOutput = str_replace('"', "&quot;", $tempOutput);

如果您在使用前回显字符串,则会出现此结果:

<a href=&#39;temp.txt&#39;>&quot;Happy&quot;</a>

如果您检查页面元素,则会出现此结果:

<a onclick="
                    var divTag = document.createElement('div');
                    divTag.innerHTML = '&lt;a href='temp.txt'&gt;&quot;Happy&quot;&lt;/a&gt;';
                    document.getElementById('extraDiv').appendChild(divTag) ;
                ">test</a>

我也尝试仅附加到 extradiv 的innerHTML,但也没有成功。

I'm using PHP to generate a Javascript button that adds in a checkbox and some other HTML.

What is the proper way to escape these characters to include them in an onclick event?

I saw it suggested to convert ' and " to the ascii values, but that doesn't seem to have helped.

$tempOutput = "<a href='temp.txt'>\"Happy\"</a>";
$tempOutput = str_replace("'", "'", $tempOutput);
$tempOutput = str_replace('"', """, $tempOutput);

just results in this if you echo the string right before use:

<a href='temp.txt'>"Happy"</a>

and this if you inspect the page element:

<a onclick="
                    var divTag = document.createElement('div');
                    divTag.innerHTML = '<a href='temp.txt'>"Happy"</a>';
                    document.getElementById('extraDiv').appendChild(divTag) ;
                ">test</a>

I've also tried just appending to the extradiv's innerHTML but no success there either.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

画中仙 2024-11-22 01:17:52

我主要使用 PHP 的 rawurlencode() 和 Javascript 的 unescape():

  <?php
    $tempOutput = '<a href="temp.txt">'.htmlentities('"Happy"').'</a>';
  ?>
  <a onclick="
              var divTag = document.createElement('div');
              divTag.innerHTML = unescape('<?php echo rawurlencode($tempOutput);?>');
              document.getElementById('extraDiv').appendChild(divTag) ;
             ">test</a>
  <div id="extraDiv"></div>

这也将避免其他字符的错误,例如换行符。

I mostly use PHPs rawurlencode() and Javascript's unescape():

  <?php
    $tempOutput = '<a href="temp.txt">'.htmlentities('"Happy"').'</a>';
  ?>
  <a onclick="
              var divTag = document.createElement('div');
              divTag.innerHTML = unescape('<?php echo rawurlencode($tempOutput);?>');
              document.getElementById('extraDiv').appendChild(divTag) ;
             ">test</a>
  <div id="extraDiv"></div>

This will also avoid errors with other chars, e.g. linebreaks.

自此以后,行同陌路 2024-11-22 01:17:52

就这样逃走

$tempOutput = str_replace(array("'",'"'), array("\'",'"'), $tempOutput);

Escape like this

$tempOutput = str_replace(array("'",'"'), array("\'",'"'), $tempOutput);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文