TradeMe Address Check

Add Link To Check An Address

当前为 2014-07-17 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name TradeMe Address Check
  3. // @namespace https://greasyfork.org/scripts/3143-address-check
  4. // @version 0.31
  5. // @description Add Link To Check An Address
  6. // @include http://www.trademe.co.nz/MyTradeMe/Delivery/SendDeliveryAddress.aspx*
  7. // @include http://www.trademe.co.nz/MyTradeMe/Sell/Sold.aspx*
  8. // @copyright public domain
  9. // @author Godfrey Livingstone godfrey@satelliteshop.co.nz
  10. // @run-at document-end
  11. // @require https://greasyfork.org/scripts/2722-gm-config-mod-library/code/gm_config_mod%20library.js?version=7536
  12. // @grant GM_addStyle
  13. // @grant GM_getValue
  14. // @grant GM_log
  15. // @grant GM_registerMenuCommand
  16. // @grant GM_setValue
  17. // ==/UserScript==
  18. // v0.31: Remove all jquery so that it works with GM 2.0 aand TM 3.8
  19.  
  20. if (window.top != window.self) { //-- Don't run on frames or iframes
  21. return;
  22. }
  23.  
  24. // replace trademe's JS error handler
  25. window.onerror=function(msg, url, linenumber){
  26. console.log('Error message: '+msg+'\nURL: '+url+'\nLine Number: '+linenumber);
  27. return true;
  28. };
  29.  
  30. //
  31. // Delivery Address
  32. // http://www.trademe.co.nz/MyTradeMe/Delivery/SendDeliveryAddress.aspx?asid=<purchase id>
  33. //
  34. // Delivery Address
  35. // Phone Number
  36. // Message
  37.  
  38. //
  39. // Purchase Summary
  40. // http://www.trademe.co.nz/MyTradeMe/PurchaseSummary.aspx?asid=<purchase id>&isBuyer=false
  41. //
  42. // Shipping Option
  43.  
  44. //
  45. // Listing
  46. // http://www.trademe.co.nz/Browse/Listing.aspx?id=<Listing ID>
  47. //
  48. // Title
  49. // Photo Link
  50.  
  51. //
  52. // Photo
  53. // http://images.trademe.co.nz/photoserver/tq/263983945.jpg
  54. //
  55.  
  56. // separate function to add '!' to encodeURIComponent
  57. // also removes hard returns
  58. function encodeURIfix(str) {
  59. return encodeURIComponent(str).replace(/!/g,'%21').replace(/%0A/g,'%20');
  60. }
  61.  
  62. // Prototype for the callback function - remember which purchase
  63. Function.prototype.bind = function (thisObject) {
  64. var method, oldargs, newargs;
  65. method = this;
  66. oldargs = [].slice.call(arguments, 1);
  67. return function () {
  68. newargs = [].slice.call(arguments);
  69. return method.apply(thisObject, oldargs.concat(newargs));
  70. };
  71. };
  72.  
  73. function checkAddressLink(doc, delivery_address){
  74. var add_html, add_array, add_str, encoded_add, namestr, encoded_name, ph, encoded_ph, message, encoded_message, encoded_addassent, link_url;
  75. add_html = delivery_address.innerHTML;
  76. add_array = add_html.split("<br>");
  77. add_str = add_array.slice(1, -1).join(', ');
  78. encoded_add = encodeURIfix(add_str);
  79. namestr = add_array[0];
  80. encoded_name = encodeURIfix(namestr);
  81.  
  82. ph = doc.getElementById("PhoneNumber");
  83. encoded_ph = "";
  84. if (ph) {
  85. encoded_ph = encodeURIfix(ph.innerHTML);
  86. }
  87.  
  88. message = doc.getElementById("Message");
  89. encoded_message = "";
  90. if (message){
  91. encoded_message = encodeURIfix(message.innerHTML);
  92. }
  93.  
  94. encoded_addassent = encodeURIfix(add_html);
  95.  
  96. link_url = "http://www.addresscheck.co.nz/?address=";
  97. link_url = link_url + encoded_add + '&name=' + encoded_name + '&phone=' + encoded_ph + '&address_as_sent=' + encoded_addassent + '&message=' + encoded_message;
  98. return link_url;
  99. }
  100.  
  101. function addSoldDeliveryCheck(dL) {
  102. var doc, delivery_address, link_url, add_image, add_link, newTr, td_start, td_end;
  103. //var purchase_summary_url = 'http://www.trademe.co.nz/MyTradeMe/PurchaseSummary.aspx?asid=' + pReference + '&isBuyer=false';
  104.  
  105. //turn the response text into a dom object
  106. doc = document.implementation.createHTMLDocument("delivery address");
  107. doc.documentElement.innerHTML = dL.target.responseText;
  108. delivery_address = doc.getElementById("DeliveryAddress");
  109.  
  110. if ( delivery_address ) {
  111. link_url = checkAddressLink(doc, delivery_address);
  112. add_image = '<a id="AddressImageCheckLink" target="_blank" href="' + link_url + '"><img width="18" height="17" alt="" style="vertical-align: middle; margin-right:5px; border:0;"src="/images/1pixel.gif"></a>';
  113. add_link = '<a id="AddressCheckLink" target="_blank" href="' + link_url + '"> * Check address * </a>';
  114.  
  115. newTr = document.createElement("tr");
  116. td_start = '<td style="vertical-align: middle;"></td><td style="color: #666;" align="left"><small>';
  117. // td_start = '<td style="vertical-align: middle;"><img alt="" src="/images/my_trademe/tick2.gif"></td><td style="color: #666;" align="left"><small>';
  118. td_end = '</small></td>';
  119. newTr.innerHTML = td_start + add_link + td_end;
  120. this.deliveryDetails.parentNode.parentNode.parentNode.parentNode.appendChild(newTr);
  121.  
  122. }
  123. doc.parentNode.removeChild(doc);
  124. }
  125.  
  126. // Are we on the SendDeliveryAddress page?
  127. var delivery_address, link_url, add_image, add_link, newDiv;
  128.  
  129. delivery_address = document.getElementById("DeliveryAddress");
  130. if ( delivery_address ) {
  131. link_url = checkAddressLink(document, delivery_address);
  132. add_image = '<a id="AddressImageCheckLink" target="_blank" href="' + link_url + '"><img width="18" height="17" alt="" style="vertical-align: middle; margin-right:5px; border:0;"src="/images/1pixel.gif"></a>';
  133. add_link = '<a id="AddressCheckLink" target="_blank" href="' + link_url + '">Check address</a>';
  134. newDiv = document.createElement("div");
  135. newDiv.setAttribute("style", "font-size: 12px; margin-top: 10px; padding: 0;");
  136. newDiv.innerHTML = add_image + add_link;
  137. delivery_address.parentNode.appendChild(newDiv);
  138. }
  139.  
  140. // Are we on the Sold Page and have any 'Delivery address' details been provided?
  141. var frm, i, j, l, m, els, els2, el, el2, pReference, oReq, auction_array;
  142.  
  143. frm = document.getElementById("form1");
  144. if (frm) {
  145. els = frm.getElementsByTagName("a");
  146. for ( i = 0, l = els.length; i < l; i++) {
  147. el = els[i];
  148. if (el.innerHTML === 'Delivery address') {
  149. pReference = el.href.replace(/.*asid=/i, '');
  150. oReq = new XMLHttpRequest();
  151. oReq.open("GET", el.href);
  152. // register the event handler
  153. oReq.addEventListener("load", addSoldDeliveryCheck.bind({
  154. deliveryDetails: el
  155. }), true);
  156. oReq.send();
  157. }
  158. }
  159. els2 = frm.getElementsByTagName("dt");
  160. for ( j = 0, m = els2.length; j < m; j++) {
  161. el2 = els2[j];
  162. if (el2.innerHTML === "Listing #:") {
  163. auction_array = el2.nextSibling.innerHTML.split(";");
  164. console.log(auction_array[0]);
  165. console.log(auction_array[1]);
  166. el2.nextSibling.innerHTML = auction_array[0] + ';<a target="_blank" href="http://www.trademe.co.nz/Browse/Listing.aspx?id=' + auction_array[1] + '">' + auction_array[1] + '</a>';
  167. }
  168. }
  169. }