2017-03-23 145 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