我正在尝试为Twitter编写Chrome扩展程序,并希望稍微修改页面的布局。我已经尝试了很多东西并且用Google搜索,但无济于事。
我想在趋势和页脚之间添加一个div。但是,Twitter似乎使用ajax生成这些元素,因此当代码运行时它们不存在,即使在$(document).ready函数中也是如此。
我使用它的唯一方法是将我的代码放入setTimeout函数1-2秒。这似乎是一个相当不可靠的解决方案,所以我非常感谢这个问题的任何帮助。
提前致谢!
答案 0 :(得分:2)
执行此操作的方法是创建背景页面,然后使用chrome.extension.getBackgroundPage().
调用它
完成ajax请求后,您可以调整弹出页面。如果你必须将参数发送到后台页面,那么你必须将监听器添加到后台页面,如下所示:
================
chrome.extension.sendRequest({greeting: "hello"}, function(response) {
console.log(response.farewell);
});
===============
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
sendResponse({farewell: "goodbye"});
});
有关消息传递的更多信息,请访问:Message passing。
如果你真的不想这么做,你可以通过将参数设置为false来同步调用ajax请求。
xmlhttp.open("GET","url",false);
然而,这不是一个好习惯,我会强烈反对。希望这可以解决你的问题!
答案 1 :(得分:1)
在每个AJAX请求之后检查是否存在某些DOM元素并不比使用setTimeout
每1-2秒检查一次相同的事情要好得多(正如您所做的那样)。
更好的方法是使用DOMNodeInserted事件。如果你正确设置它(将它添加到正确的元素),只要你等待的元素被插入DOM,你就会收到通知。事件发生后,请记住删除它(removeEventListener
),因为performance issues已知突变事件。