我对javascript,JQuery,AJAX和Chrome插件都很陌生,我已经做了很多搜索,但我仍然坚持。试图构建一个chrome插件,它拦截特定AJAX请求的响应并稍微修改它。
AJAX响应在页面中插入一个表,我想修改该表的特定元素以包含不同的东西,这样当表更新时,而不是" Bob的Burgers&#34 ;它会说" Bill' s Burgers"。
到目前为止我尝试过的事情: 我知道如何制作基本的插件和搜索我找到了这段代码:
id
来自这个答案:How can I intercept ajax responses in jQuery before the event handler?
然而,答案是从2011年开始,在JQuery网站上他们谈论了一个ajax预过滤器(http://api.jquery.com/jQuery.ajaxPrefilter/),我应该使用它吗?
最后,我的清单文件会如何变化?更改应该在内容脚本或后台脚本中吗?
对此的任何指导将不胜感激。
的manifest.json
jQuery.ajaxSetup({
dataFilter: function (data, type) {
//modify the data
return data;
}
});
content.js
{
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
"manifest_version": 2,
"name": "extensiontest",
"version": "0.2",
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["jquery-3.2.1.min.js","content.js"]
}
],
"browser_action": {
"default_icon": "icon.png",
"default_popup":"popup.html"
}
}
popup.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if( request.message === "start" ) {
$( document ).ajaxSuccess(function( event, xhr, settings ) { console.log(event); console.log(xhr); console.log(settings); });
}
}
);
popup.html
$(document).ready(function(){
$('body').on('click', '#button1', function(){
chrome.tabs.query({currentWindow: true, active: true}, function (tabs){
var activeTab = tabs[0];
chrome.tabs.sendMessage(activeTab.id, {"message": "start"});
});
});
});