Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我的XMLHttpRequest包装程序正在破坏进程_Javascript_Ajax_Xmlhttprequest_Userscripts - Fatal编程技术网

Javascript 我的XMLHttpRequest包装程序正在破坏进程

Javascript 我的XMLHttpRequest包装程序正在破坏进程,javascript,ajax,xmlhttprequest,userscripts,Javascript,Ajax,Xmlhttprequest,Userscripts,我通过用户脚本向现有站点添加功能。单击某个按钮后,站点将执行XMLHttpRequest操作。然后,它动态地将HTML添加到正文中,正文中包括我需要单击的按钮,并在页面中创建一个模式。为了自动执行下一次单击,我必须观察XHR事件是否完成,查找要生成的预期按钮,然后单击它。我已成功地将事件侦听器添加到XMLHttpRequest原型中。此包装器的不同迭代都有效,但没有一次具有适当的性能。因为我正在修改原型,所以解决方案必须是快速的。下面的最新版本速度很快,但它开始破坏XHR请求。该网站在控制台中报

我通过用户脚本向现有站点添加功能。单击某个按钮后,站点将执行XMLHttpRequest操作。然后,它动态地将HTML添加到正文中,正文中包括我需要单击的按钮,并在页面中创建一个模式。为了自动执行下一次单击,我必须观察XHR事件是否完成,查找要生成的预期按钮,然后单击它。我已成功地将事件侦听器添加到XMLHttpRequest原型中。此包装器的不同迭代都有效,但没有一次具有适当的性能。因为我正在修改原型,所以解决方案必须是快速的。下面的最新版本速度很快,但它开始破坏XHR请求。该网站在控制台中报告“AJAX错误”

(function(open) { XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { this.addEventListener("readystatechange", function() { if (this.readyState == 4){ console.log("completed"); try{ var elm = document.getElementById('avsaddressupdate_submit_btn'); console.log(elm); elm.click(); } catch(e){ console.log(e); } } }, false); open.call(this, method, url, async, user, pass); }; })(XMLHttpRequest.prototype.open);
提前感谢您的帮助。

为什么要使用try-catch,而不只是在单击之前检查按钮是否存在?如果elm{elm.click;}劫持整个XHR对象来执行此操作似乎也很奇怪。在设置readystatechange之前移动打开的调用,这可能会修复它。在设置readtstatechange之前移动打开的调用没有帮助。到底是什么错误?Ajax错误没有给我们任何细节…抛出的是哪里?Ajax错误由站点的自定义js发布到控制台。它必须指示XHR超时或其他问题。关键是它在没有我的getElementById的情况下运行良好。我需要一个更好的解决方案。