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

时间:2013-08-01 13:35:50

标签: javascript ajax html google-chrome-extension

我正在开发一个Chrome插件,它运行一段简单的JS代码,可以调整页面上div的大小。页面加载时它工作正常。但是,该网站使用了一些ajax。加载ajax时,div resize将被撤消。每次加载此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"]
 }
],

1 个答案:

答案 0 :(得分:-2)

如果您只是想在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();
}