【问题标题】:executing javascript inside href attribute of anchor tag在锚标记的href属性内执行javascript
【发布时间】:2013-11-15 10:38:53
【问题描述】:

我在 Hrefs 上查了很多,但找不到相关的东西。

我正在尝试在实际上是自定义控件类的代码中执行此操作

writer.Write("<a href='javascript:document.location.href?" + filter.ParameterName + "=" + filter.QueryValue + "'>" + filter.UserVisibleValue + "</a>|&nbsp;");

现在,在将鼠标悬停在锚点“document.location.href?Test one=2013”​​上方时,我得到了类似的结果,当我单击它时,这会引发明显的 javascript 错误“SyntaxError: missing : in conditional expression”,因为它将其作为条件运算符,因此发现 : 缺失。

我只是希望应该计算 document.location.href(当前 url)并将值放在我使用它的位置。

我知道我可以简单地调用一个 javascript 函数并在该函数中设置 href 但我可以这样做吗?

【问题讨论】:

  • 除了可能与否;你为什么要它?只需使用一个功能。它看起来和读起来比内联废话舒服得多!
  • 这不是它的工作原理。当您使用“javascript:”作为 href 值的前缀时,后面的所有内容都被视为 javascript 代码并被执行。您想要的是使用与当前页面相同的 URL 作为基础 + 一些查询字符串。对吗?
  • 是的,但这些是在 foreach 循环中生成的多个锚点,每个锚点将在控制类中动态创建不同的查询字符串

标签: javascript jquery html


【解决方案1】:

试试这个:

writer.Write("<a href='javascript:window.location = document.location.href?" + filter.ParameterName + "=" + filter.QueryValue + "'>" + filter.UserVisibleValue + "</a>|&nbsp;");

请注意,您可能必须根据需要转义值,否则 JavaScript 将变得无效。为了证明上述方法有效,您可以在任何 HTML 页面中复制粘贴以下更简单的示例并查看它是否有效:

<a href="javascript:window.location=window.location + '?a=5'">bla</a>

【讨论】:

  • 我建议首先尝试答案中的第二个示例,这非常简单。您可以将其放入 HTML 中并查看它是否正常工作。这至少会证明基本概念是有效的。然后查看您在 href 中动态生成的值是什么。很可能您没有转义某些字符,因此 JavaScript 变得无效。要调试这个,我强烈建议将上面的基本代码放在函数中,然后使用 Chrome 开发工具在那里设置断点。
猜你喜欢
  • 2012-06-08
  • 1970-01-01
  • 2011-12-28
  • 2015-05-09
  • 1970-01-01
  • 2011-07-14
  • 2014-03-09
  • 2021-11-12
相关资源
最近更新 更多