2017-03-23 146 views
0

我一直在建立一個鉻擴展,我一直在使用內容腳本來偵聽表單提交事件。我測試了我的擴展,它工作得很好,直到我在一個沒有工作的網站上測試。它不起作用的原因是因爲表單按鈕並不是真正的提交操作的表單按鈕。它實際上是一個帶有鏈接到「javascript :;」的href標記的<a>標記,因此提交事件不會觸發。該鏈接位於表單內,而不是提交操作的按鈕標記。如何確保在用戶嘗試提交表單時觸發我的內容腳本?表單提交的表單提交事件監聽器沒有提交動作

回答

1

看起來很簡單,但沒有辦法實現你的要求。

考慮一下:

document.getElementById('myform').addEventListener('submit', function(e) { 
 
    e.preventDefault(); 
 
    console.log(document.getElementById('sometext').value); 
 
    console.log('form submitted'); 
 
}); 
 

 
document.getElementById('notasubmitbutton').addEventListener('click', function(e) { 
 
    console.log(document.getElementById('sometext').value); 
 
});
<form id="myform"> 
 
    <input type="text" id="sometext"> 
 
    <input type="submit"> 
 
    <button id="notasubmitbutton" type="button">Submit 2</button> 
 
</form>

有定期提交按鈕會觸發提交事件。然後還有另一個按鈕,它將收集表單中的所有數據,但不會以傳統意義提交。

絕對沒有辦法可以預見所有可能的方式有人可以建立自己的形式,你問那麼什麼不能做。

+0

我不能做你的建議,因爲它在許多不同的頁面上作爲內容腳本運行,所以我沒有元素的ID。 –

+0

@WaywardSemicolon這不是一個建議,而是一個例子來說明爲什麼不可能實現你想要做的事情。 – Schlaus