javascript - 如何删除此链接上的 javascript 事件处理程序并将其变成常规链接?

标签 javascript jquery html css

我有一个 Sharepoint 2010 页面,其中包含打开基于 Web 的 Excel 版本的链接。我想从链接中删除 onclick 和 onmousedown 事件,并将其变成一个常规链接,只需下载 excel 文件。我尝试使用此 jquery 代码从表的第一行的第三项中删除事件处理程序(请参见下面的代码),但它没有用。是否可以操纵这些 javascript 事件来创建常规链接?

$(window).load(function() { 
    $(".ms-vb-title a").attr("onmousedown",alert("Test"));  
});
<table summary="ManagerResourcesFiles " o:webquerysourcehref="/wg/ProdPayroll/_vti_bin/owssvr.dll?CS=65001&amp;XMLDATA=1&amp;RowLimit=0&amp;View={25D77A0C-2CB2-4B32-8CEC-9899E9A64193}" width="100%" border="0" cellspacing="0" dir="none" onmouseover="EnsureSelectionHandler(event,this,48)" cellpadding="1" id="onetidDoclibViewTbl0" class="ms-listviewtable" xmlns:o="urn:schemas-microsoft-com:office:office" handledeleteinit="true">
<tbody>
<tr class="ms-itmhover" iid="48,3,0" setedgeborder="true">
<td class="ms-vb-itmcbx ms-vb-firstCell"><input type="checkbox" class="s4-itm-cbx" title="Paymaster Roster"></td>
<td class="ms-vb2"><div><img src="/wg/ProdPayroll/icon/excel.png"></div></td>

<td height="100%" onmouseover="OnChildItem(this)" class="ms-vb-title"><div class="ms-vb itx" onmouseover="OnItem(this)" ctxname="ctx48" id="3" field="LinkFilename" perm="0x7fffffffffffffff" eventtype=""><a onfocus="OnLink(this)" href=" /wg/ProdPayroll/_layouts/xlviewer.aspx?id=/wg/ProdPayroll/ManagerResourcesFiles/Paymaster%20Roster.xlsx&amp;Source=https%3A%2F%2Fepwork%2Eep%2Ecorp%2Fwg%2FProdPayroll%2FSitePages%2FManagerResources%2Easpx&amp;DefaultItemOpen=1&amp;DefaultItemOpen=1" onmousedown="return VerifyHref(this,event,'0','SharePoint.OpenDocuments','/wg/ProdPayroll/_layouts/xlviewer.aspx?id=/wg/ProdPayroll/ManagerResourcesFiles/ Employee %20Roster.xlsx')" onclick="return DispEx(this,event,'TRUE','FALSE','FALSE','SharePoint.OpenDocuments.3','0','SharePoint.OpenDocuments','','1https://epwork.ep.corp/wg/ProdPayroll/_layouts/xlviewer.aspx?id=/wg/ProdPayroll/ManagerResourcesFiles/Paymaster%20Roster.xlsx','','750','0','0','0x7fffffffffffffff','','')">Employee Roster</a></div><div class="s4-ctx" onmouseover="OnChildItem(this.parentNode); return false;" style="top: 149px; left: 831px; height: 43px; line-height: 43px; margin: 0px;"><span>&nbsp;</span><a onfocus="OnChildItem(this.parentNode.parentNode); return false;" onclick="PopMenuFromChevron(event); return false;" href="javascript:;" title="Open Menu"><img src="/_layouts/images/ecbarw.png" alt="Open Menu" style="visibility: hidden;"></a><span>&nbsp;</span></div></td>

<td class="ms-vb2"><nobr>4/11/2019 4:20 PM</nobr></td>
<td class="ms-vb-user ms-vb-lastCell"><span class="ms-imnSpan"><img name="imnmark" class="ms-imnImg" title="" border="0" height="12" width="12" src="/_layouts/images/blank.gif" alt="No presence information" sip="prebek@ep.com" id="imn_313,type=smtp"><a onclick="GoToLink(this);return false;" href="/wg/ProdPayroll/_layouts/userdisp.aspx?ID=750">John Smith</a></span></td></tr>
</tbody

最佳答案

您似乎无法取消绑定(bind) onmousedown事件 offunbind .但是,您可以通过将属性设置为 null 来破坏它

$('.ms-vb-title a').attr('mousedown', null); // <-- Remember to put quotes around your selector

如果这不起作用并且事件仍然附加到它,我会验证您的选择器是否正确。我记得当我在 SharePoint 工作时,DOM 完全是一团糟(到处都是重复的 ID),我总是在努力找出正确的选择器。

如果您正在寻找有关下载部分的建议,您可以轻松地将链接转换为下载对象(或创建一个隐藏对象)。

let csvData = `data:text/csv;charset=utf-8, ${myCsvData}`;
let encodedUri = encodeURI(csvData);
let link = document.createElement('a');
link.href = encodedUri;
link.download = 'mycsv.csv';
document.body.appendChild(link);
link.click(); // <-- will trigger the actual download process

function test() {
  alert('tst');
}

$(document).ready(() => {
  const button = $('button');
  // button.off('onmousedown'); // <-- wont work
  // button.unbind('onmousedown'); // <-- wont work
  // button.off('mousedown'); // <-- wont work
  // button.unbind('mousedown'); // <-- wont work
  // button.attr('onmousedown', null); // <-- uncomment to kill onmousedown event
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button onmousedown="test()">
Test
</button>

关于javascript - 如何删除此链接上的 javascript 事件处理程序并将其变成常规链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58193356/

相关文章:

java - servlet 是否适合用于我的网站登录确认页面?

javascript - 我想在点击的范围内添加类(class)

javascript - HTML/JavaScript/PHP : How do I get a web button to make images cycle through a directory?

javascript - ng-click 不执行任何操作,DOM 注意到单击

javascript - 为什么可警报换行符不起作用?

javascript - 将图像字节保存到隐藏字段 HTML5

javascript - jquery:突出显示插件崩溃浏览器?

jquery - 第一次尝试延迟加载(延迟加载嵌入的 YouTube 视频)——我怎样才能更优雅地做到这一点?

javascript - Conceal Facebook Like 按钮上的计数器

javascript - 如何获取数组项并在html中制作相应的span