禁用alert();

spe*_*ked 31 javascript jquery

我无法控制的页面上生成的代码包含警报.是否有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 } 
Run Code Online (Sandbox Code Playgroud)

我想在第1321行禁用警报

谢谢

And*_*ore 89

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

window.alert = function() {};

// or simply
alert = function() {};
Run Code Online (Sandbox Code Playgroud)

  • @NkSP我认为您可以通过运行`delete window.alert`或只是`删除警报'(在Chrome控制台中为我工作)重新启用它.我认为这将删除您的空函数并使本机函数按预期工作. (3认同)
  • 第二个版本在IE中不起作用.坚持第一. (2认同)
  • 如何再次启用它? (2认同)

joa*_*oar 14

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

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)
Run Code Online (Sandbox Code Playgroud)

  • 事实上,如果您避免使用alert() 的默认行为,那么至少将alert() 调用输出到console.log() 是一个好主意。仅仅覆盖警报就会让您陷入更加模糊的境地。您的代码可能会失败,并且因为您抑制了所有警报(可能包含重要信息),所以您可能永远不会被确认。凉爽的。 (2认同)

Vla*_*d.P 8

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


Jam*_*man 6

试试这个:

alert("test");
alert = function(){};
alert("test");
Run Code Online (Sandbox Code Playgroud)

第二行分配一个新的空白函数来提醒,同时不会破坏它是一个函数的事实.请参阅:http://jsfiddle.net/9MHzL/