當用戶單擊鏈接或提交表單時,我希望觸發並忘記請求,且延遲時間很短。這裏有一個簡單的代碼,我使用的是:在Chrome中延遲提交表單
element.addEventListener(eventType, function(event) {
if (event.retriggered) {
return true;
}
let target = event.target;
let newEvent = new event.constructor(event.type, event);
newEvent.retriggered = true;
setTimeout(() => {
target.dispatchEvent(newEvent);
}, 250);
// fire and forget the request
makeRequest();
event.preventDefault();
return false;
});
這工作正常click
事件和它工作得很好submit
事件在Firefox,但無法在Chrome。我創建了一個fiddle here。在Firefox中,如果您單擊該按鈕,則可以看到瀏覽器發出GET請求,但在Chrome中不會發生這種情況。根據我的測試,兩個瀏覽器中的原始和新事件看起來都一樣,並且dispatchEvent
返回true
。儘管如此,實際提交併未在Chrome中觸發,因此我想知道Chrome會停止提交作爲安全措施,還是我錯過了某些內容?
這樣的作品,謝謝。我所期待的,不包括特殊情況下的解決方案,但它似乎是Chrome的安全功能防止觸發表單提交程序的事件。 –
你可以嘗試'目標[event.type]();'如果你真的不喜歡的'form'元素的檢查。 – Thijs