【问题标题】:Hyperlink click is not firing超链接点击未触发
【发布时间】:2015-03-05 19:34:36
【问题描述】:

我想用 JavaScript 捕捉点击超链接。我使用了这段代码:

for (var i = 0; i < document.links.length; i++) { 
    document.links[i].onclick = function() { 
           doSomething();       
        } 
    }

在普通超链接&lt;a href="index.html"&gt;Home&lt;/a&gt; 上一切正常,但在指向 pdf 文件的链接上

<a href="tmp.pdf">tmp.pdf</a>

不调用动作doSomething();。我的页面被重定向到 tmp.pdf 而不触发点击事件。我不知道为什么。

你能告诉我什么是问题。我想避免使用 jQuery。

【问题讨论】:

  • 浏览器只打开pdf文件是什么意思?
  • 我的页面在没有触发点击事件的情况下重定向到 tmp.pdf
  • 什么时候/在哪里使用 for 循环?
  • 尝试将 document.links 切换到document.getElementByTagName("a")
  • document.links 包含所有超链接...我检查了它

标签: javascript events hyperlink click


【解决方案1】:

您可以删除 href 属性并在 catch 函数中重定向到文件。执行一些逻辑,然后将用户重定向到新页面/文件。

<a id="pdf" href="">tmp.pdf</a>

for (var i = 0; i < document.links.length; i++) { 
    document.links[i].onclick = function() { 
           doSomething();  
           if(link[s].id == "pdf"){
               window.location="tmp.pdf";
           }
        } 
    }

【讨论】:

  • 感谢您的回复,但我不知道 javascript 中的 pdf 名称。它是服务器提供给我的html
【解决方案2】:

我认为您需要确保,您是在页面加载后执行的 javascript。它可能对你有用

$( document ).ready(function() {
 for (var i = 0; i < document.links.length; i++) {
  document.links[i].onclick = function() {
         alert('testing')
      }
  }
});

仅供参考,我正在使用 jQuery 就绪事件来确保脚本在页面加载后执行。

【讨论】:

  • 操作请求没有 JQuery。否则我会同意。
  • 我也通过 jQuery 尝试过。也是这个解决方案。结果是一样的,正常的超链接被调用,但'pdf'超链接不被调用。
  • 我不确定你的问题,但你可以使用 event.preventDefault() 进行调试
  • 也许我还有一些导致此问题的其他代码。因为它是现有的大页面。我必须更多地探索它。非常感谢
  • @y0io 很好,如果你不想使用 jQuery,你可以试试 window.onload
【解决方案3】:

所以,我找到了它...在 javascript 文件的某个地方,我发现了导致我的问题的代码

  if ( (String($(this).prop('href')).indexOf('.pdf') != -1)) {
    evt.stopPropagation();
    evt.cancelBubble = true;

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    相关资源
    最近更新 更多