如何在每次加载Ajax时都运行一些JS代码

How can I run some JS code every time some Ajax loads?

本文关键字:运行 代码 JS Ajax 加载      更新时间:2023-09-26

我正在开发一个Chrome插件,它运行一段简单的JS代码,可以调整页面上的div大小。加载页面时工作正常。不过,该网站使用了一些ajax。当ajax加载时,div的大小调整被撤消。如何在每次加载此ajax请求时重新执行脚本?

ajax每次总是简单地从一个地方加载:www.website.com/Default.aspx

这可能真的很简单,但我是一个完全的新手:)谢谢!


关于查看代码的请求,请记住,除了对基本原理的理解之外,我没有真正的编程经验。这个插件已经从谷歌搜索中被删除了。也许我咬得太多了,但现在是这样:

这是要执行的代码:

document.getElementById('ctl00_Body_cntrl_rgMyIssues_GridData').style.height = '500px';

这是manifest.json中处理运行js:的部分

{
"manifest_version": 2,
"content_scripts": [
{
  "matches": ["https://www.website.com/*"],
  "js": ["resize_queue.js"]
 }
],

如果您只是想在ajax请求返回后编写一段javascript代码,那么基本上可以使用两种方法之一。

1) 执行同步请求而不是异步请求。

这是一个简单的例子:xmlhttp.open("GET","cd_catalog.xml",false); //Note the false

然后,您只需将想要运行的任何代码放在这之后,javascript就会等待,直到ajax请求完成。

2) 将要运行的代码放在ajax的readystate部分。

以下内容摘自w3schools(并不像大家说的那么可怕):

function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    //Do other code here
    }
  }
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
}