【发布时间】:2014-03-24 05:51:57
【问题描述】:
当我请求时
BASE_URL + 'json/valueone?callback=fnCallBack0'
来自服务器的响应在回调函数中处理。该函数接收(ASYNCHRONOUS)数据(JSON格式)但不包含初始参数“valueone”
var BASE_URL = ...
function fnCallBack(data){
if (data != null) {
// HERE...I NEED ID <====================
// arguments.callee.caller <==================== dont work
console.log('information', data);
}
}
// onclick callback function.
function OnClick(info, tab) {
var arrH = ['valueone', 'valuetwo'];
arrH.forEach(function(value) {
var scrCallBack = document.createElement('script');
scrCallBack.src = BASE_URL + 'json/' + value + '?callback=fnCallBack';
//BASE_URL + 'json/one?callback=fnCallBack0';
document.body.appendChild(scrCallBack);
});
我的解决方案是创建一个中间函数相关名称(fnCallBack0、fnCallBack1、...)、一个全局数组和一个计数器。工作正常,但这不是 OOP,是一种软糖。
var BASE_URL = ...
//global array
var arrH = [];
var fnCallBack0 = function(data){
fnCallBack(data, '0');
}
var fnCallBack1 = function(data){
fnCallBack(data, '1');
}
function fnCallBack(data, id){
if (data != null) {
console.log('information', data + arrH[id]);
}
}
// onclick callback function.
function OnClick(info, tab) {
var i = 0;
arrH = ['valueone', 'valuetwo'];
arrH.forEach(function(value) {
var scrCallBack = document.createElement('script');
scrCallBack.src = BASE_URL + 'json/' + value + '?callback=fnCallBack' + (i++).toString();
//BASE_URL + 'json/one?callback=fnCallBack0';
document.body.appendChild(scrCallBack);
});
chrome.contextMenus.create({
title: '%s',
contexts: ["selection"],
onclick: function(info) {console.log(info.selectionText)}
});
var idConsole = chrome.contextMenus.create({
title: 'console',
contexts: ["selection"],
onclick: OnClick
});
我尝试在 html 页面中使用注入函数作为代码,但我收到“内联安全错误”,以及很多类似的问题。
请不要使用 AJAX,也不要使用 jQuery。
这是我的第一篇文章,也是我的第一个 chrome 扩展 提前致谢。
【问题讨论】:
标签: javascript google-chrome-extension jsonp