【问题标题】:Trailing hash (#) in URL breaks some Javascript?URL 中的尾随哈希 (#) 会破坏一些 Javascript?
【发布时间】:2012-05-18 03:40:58
【问题描述】:

我最近在尝试调试我们的 Magento 商店的问题时遇到了一个真正的问题。其中一个模板文件中的一些内联 javascript 没有运行,我不知道为什么。它在另一个查看不同产品的页面实例中运行良好,但在查看我遇到问题的页面时却没有。不知何故,在我的调试过程中,一个井号 (#) 被添加到 URL 的末尾。出于某种原因,这导致 Javascript 无法运行。我删除了哈希,一切都按预期工作。我知道 URL 中的散列用于链接到锚点,您也可以使用散列做其他花哨的事情,我不熟悉但在寻找解决方案时遇到了这些事情。谁能解释这里发生了什么以及为什么斜杠会破坏我的一些javascript?另外,您是否建议我采取措施清理 URL(可能使用 htaccess 规则),以免客户意外遇到此问题并诅咒我们的网站损坏?

谢谢!

【问题讨论】:

  • 片段(# 后面的部分)永远不会发送到服务器,因此不会是服务器端问题。我也不确定这是否真的是客户端问题,也许只是巧合,删除它也解决了问题?如果不查看您的页面,尤其是受影响的 URL,这真的很难说。

标签: javascript url magento


【解决方案1】:

很可能您使用的 js 会解析 URL 并尝试将结尾部分(查询或诸如此类)与特定字符串匹配。一旦添加了#,字符串就不再匹配,所以它不起作用。

当然,也可以是其他东西,但我首先想到的是没有看到示例代码

【讨论】:

  • +1。哈希段本身不会破坏任何现有的 JS 代码。
  • 我描述的问题是js解析url结尾部分并尝试匹配预定义的字符串。类似于尝试匹配以下内容, if(query == "cars") 除了查询在末尾有一个 # 所以它不匹配因此 js 由于不匹配而无法工作。任何应该开火的东西,都没有开火。从作者的描述来看,这似乎是一个可能的问题
  • @Huangism,你可能是对的。就我所知,不工作的代码并不关心 URL,但也许有其他的事情,并且问题会级联并影响其他代码。只要不是已知问题,我想就可以解决。
  • 如果您可以发布一些示例代码,我们可能可以进一步诊断此问题
猜你喜欢
  • 2017-11-04
  • 2012-07-10
  • 1970-01-01
  • 2018-07-28
  • 2021-01-31
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2017-06-12
相关资源
最近更新 更多