第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在卸載之前重寫該對(duì)話框并將其替換為我自己的對(duì)話框?

如何在卸載之前重寫該對(duì)話框并將其替換為我自己的對(duì)話框?

躍然一笑 2019-06-01 13:36:01
如何在卸載之前重寫該對(duì)話框并將其替換為我自己的對(duì)話框?在用戶離開頁面之前,我需要提醒他們注意未保存的更改(這是一個(gè)非常常見的問題)。window.onbeforeunload=handler這是可行的,但它會(huì)引發(fā)一個(gè)默認(rèn)對(duì)話框,其中包含一個(gè)令人惱火的標(biāo)準(zhǔn)消息,該消息包裝了我自己的文本我需要完全替換標(biāo)準(zhǔn)消息,這樣我的文本就清晰了,或者(更好的)使用jQuery替換整個(gè)對(duì)話框。到目前為止,我已經(jīng)失敗了,我還沒有找到其他似乎有答案的人。有可能嗎?頁面中的JavaScript:<script type="text/javascript">       window.onbeforeunload=closeIt;</script>clseit()函數(shù):function closeIt(){   if (changes == "true" || files == "true")   {       return "Here you can append a custom message to the default dialog.";   }}使用jQuery和jqModal,我嘗試了這種方法(使用自定義的確認(rèn)對(duì)話框):$(window).beforeunload(function() {         confirm('new message: ' + this.href + ' !', this.href);         return false;     });這也不起作用-我似乎不能綁定到前卸載事件。
查看完整描述

4 回答

?
慕少森

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊

不能修改默認(rèn)對(duì)話onbeforeunload所以你最好的選擇就是處理它。

window.onbeforeunload = function() {
    return 'You have unsaved changes!';}

這里有一個(gè)參考微軟對(duì)此表示:

當(dāng)將字符串分配給window.Event的返回值屬性時(shí),將出現(xiàn)一個(gè)對(duì)話框,該對(duì)話框允許用戶在當(dāng)前頁上停留并保留分配給它的字符串。對(duì)話框中顯示的默認(rèn)語句“確實(shí)要從此頁導(dǎo)航嗎?.請(qǐng)按”確定“繼續(xù),或”取消“以保留當(dāng)前頁?!睙o法刪除或更改。

問題似乎是:

  1. 什么時(shí)候

    onbeforeunload

    調(diào)用時(shí),它將處理程序的返回值作為

    window.event.returnValue.

  2. 然后將返回值解析為字符串(除非為NULL)。
  3. false

    被解析為字符串時(shí),對(duì)話框?qū)⒂|發(fā),然后該對(duì)話框?qū)鬟f一個(gè)適當(dāng)?shù)?/trans>

    true/false.

結(jié)果是,似乎沒有一種方法來分配falseonbeforeunload若要阻止它進(jìn)行默認(rèn)對(duì)話,請(qǐng)執(zhí)行以下操作。

關(guān)于jQuery的附加說明:

  • 在jQuery中設(shè)置事件

    可以,可能

    是有問題的,因?yàn)檫@允許其他

    onbeforeunload

    事件也會(huì)發(fā)生。如果您只希望您的卸載事件發(fā)生,我將堅(jiān)持使用普通的L‘JavaScript。
  • jQuery沒有快捷方式onbeforeunload所以你得用通用的bind語法。

    $(window).bind('beforeunload', function() {} );

在卸載前對(duì)話框中的自定義消息被取消,因?yàn)閏hro-51(cf:釋放說明)


查看完整回答
反對(duì) 回復(fù) 2019-06-01
?
幕布斯6054654

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊

什么對(duì)我有用,用jQuery在IE8、Chrome和Firefox中進(jìn)行了測(cè)試,測(cè)試結(jié)果如下:

$(window).bind("beforeunload",function(event) {
    if(hasChanged) return "You have unsaved changes";});

如果不需要提示,重要的是不要返回任何內(nèi)容,因?yàn)镮E和其他瀏覽器行為之間存在差異。


查看完整回答
反對(duì) 回復(fù) 2019-06-01
?
守著星空守著你

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊

1)在卸載前使用onunload,而不是onunload。

2)重要的是避免執(zhí)行返回語句。我不是說,這是為了避免從你的教練那里回來。您可以返回,但是您可以通過確保到達(dá)函數(shù)的末尾而不執(zhí)行返回語句來完成這一任務(wù)。在這種情況下,內(nèi)建標(biāo)準(zhǔn)對(duì)話框不會(huì)出現(xiàn)。

3)如果使用onpreunload,可以在卸載前處理程序中運(yùn)行Ajax調(diào)用來清理服務(wù)器上的事務(wù),但它必須是同步的,您必須在onpreunload處理程序中等待和處理答復(fù)(仍然遵守上面的條件(2)。我這么做,效果很好。如果您執(zhí)行同步Ajax調(diào)用,那么所有的事情都會(huì)被推遲,直到響應(yīng)返回。如果您執(zhí)行異步操作,認(rèn)為您不關(guān)心來自服務(wù)器的答復(fù),那么頁面卸載將繼續(xù)進(jìn)行,Ajax調(diào)用將被此進(jìn)程中止-如果它正在運(yùn)行,包括一個(gè)遠(yuǎn)程腳本。


查看完整回答
反對(duì) 回復(fù) 2019-06-01
  • 4 回答
  • 0 關(guān)注
  • 493 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)