【问题标题】:<a> tag problem while generating javascript through java code通过java代码生成javascript时的<a>标签问题
【发布时间】:2009-10-29 11:12:21
【问题描述】:

我应该如何在 Java 中编写语句以在页面中生成 JavaScript

out.write("document.write('< a href='str'> '+str.slice(beg+1,end)+' </a>');");

这样它就会在 JavaScript 中创建语句

document.write("< a href=' "+str+" '> "+str.slice(beg+1,end)+" </a>"); //< a

链接会转到地址存储在str中的页面

目前它将 href 值作为 str 而不是存储在 str 中的值,即它正在搜索页面 str

【问题讨论】:

  • 我认为&lt;a 之间不应该有任何空格。应该是&lt;a href=...
  • 我知道...但问题是如果我在上面的文本框中写

标签: java javascript


【解决方案1】:
out.write("document.write(\"< a href='\" + str + \"'> \" + str.slice(beg + 1, end) + \" </a>\");");

【讨论】:

    【解决方案2】:

    你没有关闭&lt;a&gt;标签!

    document.write("<a href='" + str + "'>" + str.slice(beg+1, end) + "</a>");
    

    【讨论】:

      【解决方案3】:
      out.write("document.write('<a href='str'> '+str.slice(beg+1,end)+' </a>');");
      

      哎呀,你这里有四个级别的字符串编码 — 难怪它让你感到困惑。您在 Java 字符串文字内的 HTML &lt;script&gt; 块内的 JavaScript 字符串文字内的 HTML 文本节点内有一个文本字符串。

      最好避免做这样的事情,因为很容易出错。您缺少 + 将 str 连接到属性值内的字符串;如果str 包含&lt;&amp;,则由于嵌入HTML 中存在问题(可能导致跨站点脚本安全漏洞);如果str 包含空格或引号,则由于嵌入在属性值中而出现问题; &lt;/ 序列在 &lt;script&gt; 块内是无效的 HTML...

      虽然您可以通过破解自己的字符串转义函数来解决此问题,但我认为您最好使用不涉及将字符串绑定在一起的函数:

      out.write(
          "var link= document.createElement('a');\n"+
          "link.href= str;\n"+
          "link.appendChild(document.createTextNode(str.slice(beg+1, end)));\n"+
          "document.getElementById('foo').appendChild(link);\n"
      );
      

      foo 是您希望链接出现的元素。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-22
        • 1970-01-01
        • 2010-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多