首先,我是chrome扩展开发的新手。我正在开发一个chrome扩展程序,用于从特定网页上的表单收集用户输入。
在我的manifest.json中,我添加了javascripts用于此目的" content_scripts"并且在匹配的URL加载时调用它们。在我的javsacript中,我添加了eventlisteners,用于在单击按钮时触发函数。
我面临的问题是,即使是初学者也能正常工作,并且在第一次点击按钮时会执行所需的功能。
但是当第二次单击该按钮时,它不会触发监听器。
任何人都可以向我推荐一种方法来克服这个问题吗?
我的manifest.json的内容脚本部分:
"content_scripts": [
{
"matches": ["*://domain/pathtofile*"],
"all_frames": true,
"js": ["myscript.js"],
"run_at": "document_end"
}
]
在" myscript.js"中,我用这个:
document.getElementById("elementid").addEventListener("click", functiontocall);
谢谢
Sujith
------编辑------
我正在开发的扩展程序适用于特定客户端,这是Chrome商店中的未列出的扩展程序。因此,我无法通过NDA向客户提供URL。
网址(例如:" http://www.domain.com/urlpath/form.php")里面有一个DIV,其中包含一个HTML表单。因此,当加载此URL时,它与清单匹配并加载javascript" myscript.js"。在" myscript.js"中,我写了一段代码:
document.getElementById("formbuttonelement").addEventListener("click", getFormData);
函数" getFormData()"只包含基本的javascripts来从每个表单元素中获取值并准备一个查询字符串并使用AJAX发送到另一个PHP脚本(" collectForm.php")。
单击表单按钮后,DIV元素将关闭。在网页中,有一个按钮可以再次打开此DIV(HTML表单),用户可以在表单中输入数据并点击" formbuttonelement"再次提交表格。
所以,我的问题是,当我打开网址" http://www.domain.com/urlpath/form.php"第一次,一切都按预期工作,包括addEventListener部分,我可以在" collectForm.php"中获取表单数据。并且,如前所述,DIV元素将关闭。
但是当再次打开DIV(不再加载URL)时,addEventListener无效。我认为这是因为URL没有重新加载,因此没有调用" myscript.js"试。
我正在寻找一个重启事件监听器的选项,即使没有重新加载网页。
我希望我已经解释过这种情况。
谢谢&问候 Sujith