【问题标题】:Dynamically created JavaScript function not working with long parameter动态创建的 JavaScript 函数不适用于长参数
【发布时间】:2016-01-29 21:53:59
【问题描述】:

我有几个在 ASP.NET 中以编程方式生成的 html A 标记,其中一个 JavaScript 函数在 href 中采用 long 参数。其中一个在后端分配时有超过 20K 个字符,但我看到实际链接在浏览器端只有 5239 个字符,并且 JavaScript 函数没有关闭。所以链接永远不会起作用。我正在考虑这个实现的解决方法,因为将这么多的数据放在链接中并不是一个好主意,但现在我只是对问题的原因感到好奇。

为链接赋值的代码示例:

HtmlAnchor.HRef = "javascript:doSomething('Import','" + strHeader_LineIds + "');"

在这种情况下,变量 strHeader_LineIds 携带超过 20k 个字符的字符串。

我在客户端实际看到的示例:

<a id=anchor1 class=class1 href="javascript:doSomething('Import', 'blahblahblahblah....">Link Text</a>

请注意 javascript 函数在这里没有关闭。但是当我在后端调试时,我确实看到了函数的关闭。

我猜这个问题可能与浏览器的 URL 限制有关?我正在使用 IE,我了解到 IE 的最大 URL 长度限制为来自 Here 的 2,083 个字符。但是 5,239 个字符的链接怎么会显示出来呢?

【问题讨论】:

  • 改成HtmlAnchor.OnClientClick = "doSomething('Import', '" + strHeader_LineIds + "');"; 能解决什么问题吗?
  • @GregBurghardt 谢谢。回答这个问题对我来说确实有意义,但我仍然想知道这个问题的原因,因为我在链接的长度中得到了一个奇怪的数字。

标签: javascript html asp.net internet-explorer


【解决方案1】:

我在 javascript 中遇到过类似的问题,例如在代码中创建然后调用的动态函数。我发现我不得不在 javascript 函数中用双引号替换单引号或转义引号。

再一次,只是阅读您的帖子可能是一个限制问题。

您是否尝试过将 long 分配给后台元素,然后将其作为 javacript 的一部分引用。我知道 IE 会因为传入参数中的空格而变得有趣。

【讨论】:

    【解决方案2】:

    我认为找到了问题的答案。根据This Article

    JavaScript URI JavaScript 协议用于书签(又名 favlets),这是一种轻量级的可扩展性形式,允许用户单击按钮并在当前加载的页面上运行一些存储的 JavaScript。在 IE9 中,团队做了一些工作以将长度限制(从 ~260 个字符,如果我没记错的话)放宽到更大的长度(~5kb,如果我没记错的话)。

    所以我刚刚达到了 ~5kb 的限制。

    【讨论】:

      猜你喜欢
      • 2015-07-30
      • 1970-01-01
      • 2015-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-04
      • 1970-01-01
      • 2019-04-08
      相关资源
      最近更新 更多