javascript題目,如何在重寫alert後還能正常彈出alert

來源:互聯網
上載者:User

今天在群裡遇到一道很有意思的題目,大家發揮所能,給出的答案五花八門。特意整理成博文發表出來:

//原題目:window.alert = function(){};______;alert(1); 填空,使後面的alert(1)能正確彈出,至少列舉兩種不同思路。

解法一,建立新的執行環境,使用iframe沙箱

window.alert = function(){};window.alert=function(obj){    var iframe=document.createElement("iframe");    iframe.src="javascript:void(0);"    document.body.appendChild(iframe)    iframe.contentWindow.alert(obj);}alert(1)

解法二,建立新的執行環境,開啟新視窗

window.alert = function(){};window.alert = function(a){    window.open('','').alert(a)    //window.createPopup().document.parentWindow.alert(a) //IE only}alert(1);

解法三, 弄回原來的alert(IE下失敗)

window.alert = function(){};window.alert = function(a){    delete window.alert;    window.alert(a);}alert(1);

解法四,思路同三(IE下失敗)

window.alert = function(){};window.alert = function(a){   window.__proto__.alert.call(window,a);  //window.constructor.prototype.alert.call(window,a);} alert(1);

解法五(IE only)

window.alert = function(){};execScript('sub alert(msg):msgbox msg:end sub', 'vbscript');alert(1);

解法六,就是一暈招

window.alert = function(){};window.alert = function(a){    window.confirm(a)}alert(1);

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.