Как мне удалить обработчик событий javascript по этой ссылке и превратить его в обычную ссылку? - PullRequest
2 голосов
/ 02 октября 2019

У меня есть страница Sharepoint 2010 со ссылкой, которая открывает веб-версию Excel. Я хочу удалить из ссылки события onclick и onmousedown и превратить ее в обычную ссылку, которая просто загружает файл Excel. Я попытался использовать этот код jquery для удаления обработчиков событий из 3-го элемента в 1-м ряду таблицы (см. Код ниже), но это не сработало. Можно ли манипулировать этими событиями 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

1 Ответ

2 голосов
/ 02 октября 2019

Похоже, что вы не можете отменить привязку события onmousedown к off или unbind. Тем не менее, вы можете уничтожить это, просто установив для атрибута значение null

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

Если это не работает и событие все еще прикреплено к нему, я бы подтвердил, что ваш селектор правильный,Я помню, когда я работал в SharePoint, DOM был полным беспорядком (среди прочего, повсюду встречались одинаковые идентификаторы), и я всегда буду бороться за выбор правильного селектора.

Если вы ищетеСовет по части загрузки, вы можете легко преобразовать ссылку в объект загрузки (или создать скрытый).

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...