0

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

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

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


关于查看代码的请求,请记住,除了对基本原理的理解之外,我没有真正的编程经验。该插件已从 Google 搜索等中删除。也许我咬得比我能咀嚼的多,但这里是:

这是被执行的代码:

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"]
 }
],
4

1 回答 1

-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();
}
于 2013-08-01T13:41:44.557 回答