将撇号传递给javascript函数

Dal*_*las 3 html javascript jsp

我没有在JSP中使用JavaScript(利用localStorage)找到解决方案.

试图用撇号传递一些东西.我做了一个.replaceAll()并取代了'',它仍然传递它作为'.

我也试过一个.split("'")并用下面的撇号代替:

(\' , ' , \', '' , ''' and  '\'')
Run Code Online (Sandbox Code Playgroud)

所有这些只是将撇号传递给函数(当我将鼠标悬停在链接上时看到的内容),如下所示:

<a href="saveJob('<%=id%>','<%=title%>','<%=a%>' + '\'' + '<%=b%>','<%=date%>')">Save job</a>
Run Code Online (Sandbox Code Playgroud)

使用ab作为两个分裂的子串但没有效果.我注意到空格被转换为%20,但这不太舒服.还有其他想法吗?

Phr*_*ogz 5

  1. 您的JSP代码无关紧要.确定要生成的HTML并生成它.
  2. 以下是所有有效的HTML标记:

    <a href="saveJob('Bob\'s Question')"> …
    <a href="saveJob(&quot;Bob&apos;s Question&quot;)"> …
    <a href="saveJob('He said &quot;Go Away&quot;')"> …
    <a href='saveJob("He said \"Go Away\"")"> …
    
    Run Code Online (Sandbox Code Playgroud)

    ......以下内容无效:

    <a href="saveJob('Bob's Question')">       <!-- JS string ends early      -->
    <a href="saveJob("Bob's Question")">       <!-- HTML attribute ends early -->
    <a href="saveJob('Bob&apos;s Question')">  <!-- JS string ends early      -->
    <a href="saveJob('He said "Go Away"')">    <!-- HTML attribute ends early -->
    
    Run Code Online (Sandbox Code Playgroud)

    除非作为HTML实体,否则不能在属性值中使用HTML属性定界符.您不能在JavaScript字符串中使用JavaScript字符串分隔符,除非您将其转义,即使您使用HTML实体来描述它.

  3. 一般情况下,你不应该在你的HTML中放置JavaScript (你应该以编程方式从脚本中将事件处理程序附加到你的标记),你尤其不应该滥用HTML锚点作为JavaScript触发器(使用HTML锚点到有效的URL,让JavaScript在启用时劫持链接,或使用一个<button>或其他元素来调用仅脚本的副作用).