【问题标题】:Difference in browser behavior when clicking a link vs. copy-pasting it?单击链接与复制粘贴时浏览器行为的差异?
【发布时间】:2012-11-18 04:44:18
【问题描述】:

我很好奇通过单击链接加载页面与将所述链接复制粘贴到浏览器栏中时,浏览器行为有何不同。我应该知道的加载过程是否存在一般差异?

我问是因为我正在使用 Google Maps API 开发一个应用程序,在该应用程序中,用户能够使用 URL 中定义的 GPS 位置创建自定义地图链接。将链接复制粘贴到浏览器时可以正常工作;但是,如果直接单击链接,浏览器会生成“超出堆栈”异常(适用于该站点!)。

虽然我知道通常我们喜欢在 Stack Overflow 上查看代码示例,但我现在要避免这样做 - 也许如果有人知道单击和复制粘贴之间 DOM 加载过程的差异,我可以使用这样可以缩小问题的范围,而不会使与切线相关的代码的讨论陷入困境。

同样的问题出现在 Firefox 和 Chrome 中。

谢谢!

【问题讨论】:

  • 您处理问题的方式错误。与其要求列出两者之间的所有不同之处,不如询问如何解决您的具体问题不是更明智吗?谁确切地给你“超出堆栈”消息 - 两个不同的浏览器?这听起来真的不太可能。它是否以相同的方式发生在不同的机器上?我会说这似乎更有可能是服务器端问题,这是一个全新的领域。
  • “超过最大调用堆栈大小”- Chrome,“递归过多”- Firefox,都引用“main.js”- 似乎可能源于同一个问题
  • 您说的很对,我需要更仔细地查看每个浏览器的具体错误是什么
  • 这似乎是浏览器如何编码链接的问题 - 在 Firefox 中,(尽管不是 Chrome)URL 中的波浪号 (~) 被替换为 %7E,这会抛出 JS那就是解码URL。 Chrome没有显示任何替换,但是直接点击链接还是卡住
  • 很公平,你是对的,毕竟这是客户端的事情。哇,没想到这是可能的!

标签: javascript google-maps dom browser load


【解决方案1】:

不要复制和粘贴链接,而是尝试右键单击并复制链接地址。基本上,网页上的链接可以显示不同。

【讨论】:

  • 好调用 - 这样做时我注意到在 Firefox 中,单击链接会将波浪号 (~) 替换为 %7E,这会抛出脚本。我想既然 ~s 是 URL 中的合法字符,那就没问题了。我可能需要使用另一个字符来分隔 URL 中编码的数据部分
  • 一个有趣的事情是在 google 上进行正常搜索,然后将鼠标悬停在链接上...您会看到左下角的链接(在 Chrome 中)作为正常链接。但是,他们有一个 onclick 将其替换为链接的 google 表示形式。查看此问题的一种方法是右键单击链接,然后执行更改。当您再次将鼠标悬停在它上面时,它将显示“googled”版本:)
猜你喜欢
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 2014-11-29
  • 2017-04-25
  • 2012-07-06
  • 1970-01-01
相关资源
最近更新 更多