network.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. /**
  2. * 注册命名空间:baidu.network
  3. */
  4. baidu.namespace.register("baidu.network");
  5. /**
  6. * 后端网络处理,ajax等
  7. * @author zhaoxianlie
  8. */
  9. baidu.network = (function(){
  10. /**
  11. * 通过这个方法来读取服务器端的CSS文件内容,要这样做,前提是在manifest.json中配置permissions为:http://
  12. * @param {String} link 需要读取的css文件
  13. * @param {Function} callback 回调方法,格式为:function(respData){}
  14. * @config {Object} respData 输出到客户端的内容,格式为{success:BooleanValue,content:StringValue}
  15. * @return {Undefined} 无返回值
  16. */
  17. var _readFileContent = function(link,callback){
  18. //创建XMLHttpRequest对象,用原生的AJAX方式读取内容
  19. var xhr = new XMLHttpRequest();
  20. //处理细节
  21. xhr.onreadystatechange = function() {
  22. //后端已经处理完成,并已将请求response回来了
  23. if (xhr.readyState === 4) {
  24. //输出到客户端的内容,格式为{success:BooleanValue,content:StringValue}
  25. var respData;
  26. //判断status是否为OK
  27. if (xhr.status === 200 && xhr.responseText) {
  28. //OK时回送给客户端的内容
  29. respData = {
  30. success : true, //成功
  31. type : FILE.LINK, //<link>标签
  32. path : link, //文件路径
  33. content : xhr.responseText //文件内容
  34. };
  35. } else { //失败
  36. respData = {
  37. success : false, //失败
  38. type : FILE.LINK, //<link>标签
  39. path : link, //文件路径
  40. content : "FcpHelper can't load such file." //失败信息
  41. };
  42. }
  43. //触发回调,并将结果回送
  44. callback(respData);
  45. }
  46. };
  47. //打开读通道
  48. xhr.open('GET', link, true);
  49. //设置HTTP-HEADER
  50. xhr.setRequestHeader("Content-Type","text/plain;charset=UTF-8");
  51. xhr.setRequestHeader("Access-Control-Allow-Origin","*");
  52. //开始进行数据读取
  53. xhr.send();
  54. };
  55. /**
  56. * 从cookie中获取url
  57. * @param {Object} cookie
  58. */
  59. var _urlFromCookie = function(cookie){
  60. return "http" + (cookie.secure ? "s" : "") + "://" + cookie.domain + cookie.path;
  61. };
  62. /**
  63. * 获取页面上的所有cookie
  64. * @param {Object} callback
  65. */
  66. var _getCookies = function(request,callback){
  67. var arrCookies = [];
  68. chrome.cookies.getAll({}, function(cookies){
  69. for(var i=0,le=cookies.length;i<le;i++){
  70. if(request.url.indexOf(cookies[i].domain.substring(1)) > -1) {
  71. cookies[i].url = _urlFromCookie(cookies[i]);
  72. arrCookies.push(cookies[i]);
  73. }
  74. }
  75. //排序
  76. cookies.sort(function (a, b) { return a.domain.localeCompare(b.domain); });
  77. callback.call(null,{
  78. cookie : arrCookies
  79. });
  80. });
  81. };
  82. /**
  83. * 移除某个cookie
  84. * @param {Object} request
  85. * @param {Object} callback
  86. */
  87. var _removeCookie = function(request,callback){
  88. chrome.cookies.getAll({}, function(cookies){
  89. for(var i=0,le=cookies.length;i<le;i++){
  90. var url = _urlFromCookie(cookies[i]);
  91. var name = cookies[i].name;
  92. if(url == request.url && name == request.name) {
  93. chrome.cookies.remove({"url": url, "name": name});
  94. if(callback && typeof callback == "function") {
  95. callback.call(null);
  96. }
  97. return;
  98. }
  99. }
  100. });
  101. };
  102. /**
  103. * 设置某个cookie
  104. * @param {Object} request
  105. * @param {Object} callback
  106. */
  107. var _setCookie = function(request,callback){
  108. chrome.cookies.getAll({}, function(cookies){
  109. for(var i=0,le=cookies.length;i<le;i++){
  110. var url = _urlFromCookie(cookies[i]);
  111. var name = cookies[i].name;
  112. if(url == request.url && name == request.name) {
  113. chrome.cookies.set(request);
  114. if(callback && typeof callback == "function") {
  115. callback.call(null);
  116. }
  117. return;
  118. }
  119. }
  120. });
  121. };
  122. return {
  123. readFileContent : _readFileContent,
  124. getCookies : _getCookies,
  125. removeCookie : _removeCookie,
  126. setCookie : _setCookie
  127. };
  128. })();