禁用警报();

IT技术 javascript jquery
2021-03-06 11:46:12

在我无法控制的页面上生成的代码包含警报。是否有 jQuery 或其他方法来禁用 alert() 工作?

我要禁用/修改的正在生成的 javascript 是:

function fndropdownurl(val)
1317 { var target_url
1318 target_url = document.getElementById(val).value;
1319 if (target_url == 0)
1320 {
1321 alert("Please Select from DropDown")
1322 }
1323 else
1324 {
1325 window.open(target_url);
1326 return;
1327 }
1328 } 

我想禁用第 1321 行的警报

谢谢

4个回答

只需alert用您自己的空函数覆盖即可

window.alert = function() {};

// or simply
alert = function() {};
如何再次启用它?
2021-04-20 11:46:12
delete window.alert对我不起作用,但确实如此:stackoverflow.com/a/10267075/454827
2021-04-20 11:46:12
第二个版本在 IE 中不起作用。坚持第一个。
2021-04-30 11:46:12
@NkSP 我认为您可以通过运行delete window.alert或仅delete alert(两者都在 Chrome 控制台中为我工作)来重新启用它我认为这会删除您的空函数并使本机函数按预期工作。
2021-05-04 11:46:12
第一个跨浏览器工作,谢谢!
2021-05-06 11:46:12

这适用于具有该console.log功能的Chrome 和其他浏览器

window.alert = function ( text ) { console.log( 'tried to alert: ' + text ); return true; };
alert( new Date() );
// tried to alert: Wed Dec 08 2010 14:58:28 GMT+0100 (W. Europe Standard Time)
实际上,如果您避免使用 alert() 的默认行为,那么至少将 alert() 调用输出到 console.log() 是个好主意。只是覆盖警报会让你处于一个更加模糊的场景。您的代码可能会失败,并且因为您抑制了所有警报(可能包含重要信息),您可能永远不会被确认。凉爽的。
2021-05-16 11:46:12

您可以尝试创建一个新函数function alert() { },这不会做任何事情,因为它是空的,并且会覆盖现有的函数

试试这个:

alert("test");
alert = function(){};
alert("test");

第二行为 alert 分配了一个新的空白函数,同时不破坏它是一个函数的事实。见:http : //jsfiddle.net/9MHzL/