【问题标题】:Change HREF attribute for right click save as?更改右键单击另存为的 HREF 属性?
【发布时间】:2010-10-22 16:59:47
【问题描述】:

所以我有这个...

$(this).attr("href", "http://site.com/images/downloads/wp-" + $(this).parent().parent().attr("id") + "-1024x768.jpg");

问题是当我右键单击 > 将链接另存为...时,它没有链接到正确的图像。我不确定是否可以这样做,但如果有人可以帮助我,我将不胜感激。谢谢!

【问题讨论】:

  • 如果您检查您的 html 源代码,在运行该行之后 href 属性包含什么?对还是错?
  • jQuery 不会重写 html,因此源代码没有 url。实际上,当您将鼠标悬停在图像上时,状态栏中的 url 并不像我使用 jQuery 设置的那样读取。但是当我单击它时,它会将我带到 jQuery 指定的链接。
  • 你的代码什么时候运行?在 $(document).ready() 或其他时间?如果您使用 Firebug(firefox 的附加组件),您将能够实时查看 jQuery 所做的 DOM 更改,包括对 href 属性的更改。
  • 是的,我的代码已准备好在文档上运行。问题是它正在更改左键单击的 URL。因此,如果您单击鼠标左键,则该 URL 已更改。但是,如果您右键单击将链接另存为,它不会保存 jQuery 也更改了 href 的 jpg。
  • 我当然希望你在用 JavaScript 执行它之前先在 php 中执行它,否则它根本不起作用,因为 php 是在服务器上执行的,而 JavaScript 是在浏览器上执行的。

标签: jquery attributes href


【解决方案1】:

这里有个想法……把“真实”的位置放在php生成的html中

然后添加一个带有“假”位置的额外属性,然后使用 jquery 在页面加载时切换它们。这可以根据情况工作(即,如果用户禁用了 js 并且它使用“真实”位置,它不会破坏一切)

这将解决您的问题,并使几乎所有用户的最终结果都相同:)

【讨论】:

    【解决方案2】:

    您可能在$(document).ready() 中进行了设置,但您使用$(this) 的事实表明您的代码绑定到<a>onclick 事件。这可以解释为什么将鼠标悬停在链接上不会显示更改后的 href,在访问者单击链接之前值不会更改。

    您能否通过$(document).ready() 的相关部分确认我的怀疑?

    如果我是正确的,那么解决方案应该是更改 href 作为 ready() 处理的一部分,而不是当时绑定到 onclick 事件。

    【讨论】:

    • $(this) 也可能来自 each()
    • @Paolo:好点。然而,他还说:“事实上,当你将鼠标悬停在图像上时,状态栏中的 url 并不像我用 jQuery 设置的那样。但是当我单击它时,它会将我带到 jQuery 指定的链接。 ...由于在 onclick 之前更改 href 应该会导致状态栏中的 URL 正确,因此基于该评论,我仍然怀疑他将 href 更改绑定到 onclick 事件。但是当我看到他的 ready() 代码后,我会很高兴被证明是错误的。
    【解决方案3】:

    使用 Firebug 或 DOM Inspector 等诊断工具检查属性的实际最终值。

    对于不同的点击和保存行为最简单的解释是事件是否被拦截。 “另存为”使用实际的 href 值,而选择链接可能会被截获(键盘、鼠标向下和向上、单击)以将位置设置为其他内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      相关资源
      最近更新 更多