Newegg cart to post converter for eggxpert.com

Converts the cart in to postable html that has been patched for the forums

目前为 2014-06-14 提交的版本。查看 最新版本

// ==UserScript==
// @name           Newegg cart to post converter for eggxpert.com
// @namespace      http://userscripts.org/users/62850
// @description    Converts the cart in to postable html that has been patched for the forums
// @include        http://secure.newegg.com/Shopping/ShoppingCart.aspx*
// @include        http://secure.newegg.ca/Shopping/ShoppingCart.aspx*
// @version        2.3
// @grant          none
// ==/UserScript==

function findEle(target,i,e){
	if(i==9)
		return document.evaluate(target, e?e:document, null, i, null).singleNodeValue;
	else
		return document.evaluate(target, e?e:document, null, i, null);
}
function make(tag){
	return document.createElement(tag);
}
var holder=findEle('.//table[@class="head"]/tbody/tr[@class="tool-bar"]/td',6,false),btn;
if(holder.snapshotLength==2){
	btn=make('a');
	btn.className='button button-mini button-tertiary';
	btn.href="javascript:return false;";
	btn.textContent='Generate HTML Code';
	btn.title="HTML code for posting on forums";
	btn.addEventListener('click',function(){
		var table,tbody,tr,td,div,
			i,cart,item,img,IMG,a,txt,
			items=Array(),mir=Array();
		table=make('table');
		table.border=1;
		table.appendChild(make('tbody'));
		tbody=table.childNodes[0];
		tr=make('tr');
		td=make('th');
		td.textContent='Item';
		td.setAttribute('colspan',2);
		tr.appendChild(td);
		td=make('th');
		td.textContent='Quantity';
		tr.appendChild(td);
		td=make('th');
		td.textContent='Price';
		tr.appendChild(td);
		tbody.appendChild(tr);
		cart=findEle('.//table[@class="shipping-group"]/tbody/tr',6);
		for(i=0;i<cart.snapshotLength;i++){
			item=cart.snapshotItem(i);
			tr=make('tr');

			td=make('td');
			img=make('img');
			IMG=findEle('./td/div/a/img[@class="l-block product-image"]',9,item);
			img.src=IMG.src;
			td.appendChild(img);
			tr.appendChild(td);

			td=make('td');
			a=make('a');
			a.href=IMG.parentNode.href;
			a.target="_blank";
			a.textContent=IMG.parentNode.title;
			td.appendChild(a);
			tr.appendChild(td);
			
			td=make('td');
			txt=findEle('./td[@width="50px"]/input',9,item);
			td.textContent=txt?txt.value:findEle('./td[@width="50px"]/div',9,item).textContent;
			tr.appendChild(td);

			txt=td.textContent;

			td=make('td');
			if(findEle('./td/input[@type="checkbox"]',9,item)){
				a=a.href.slice(a.href.lastIndexOf('=')+1);
				items.push(a+'|'+txt);

				td.textContent=findEle('./td[@align="right"]//li[starts-with(@class,"price-current")]',9,item).textContent.replace(/(\s|\t|\n)/g,'');
				a=make('a');
				a.target="_blank";
				a.textContent='Add to cart';
				a.href='http://secure.newegg.com/Shopping/AddToCart.aspx?Submit=ADD&ItemList='+items[items.length-1];
				td.appendChild(make('br'));
				td.appendChild(a);
			}
			else{
				td.textContent='Combo Item';
			}
			tr.appendChild(td);
			
			txt=findEle('./td[@align="right"]//li[@class="price-note"]//a[contains(@title,"Mail In Rebate")]',9,item);
			if(txt){
				a=make('a');
				a.target="_blank";
				a.href=txt.href;
				a.title=a.href.slice(a.href.lastIndexOf('/')+1);
				txt=txt.textContent+' Rebate';
				txt=txt.slice(0,txt.indexOf(' '));
				a.textContent=txt;
				mir.push(a);
			}

			tbody.appendChild(tr);
		}
		cart=findEle('.//table[@class="shipping-group"]/tfoot',9);
		tr=make('tr');

		td=make('td');
		td.setAttribute('colspan',3);
		td.textContent="Subtotal:";
		tr.appendChild(td);

		txt=findEle('.//span[@class="amount"]',6,cart);
		td=make('td');
		td.textContent=txt.snapshotItem(0).textContent.replace(/(\s|\t|\n)/g,'')
		tr.appendChild(td);

		tbody.appendChild(tr);
		tr=make('tr');

		td=make('td');
		td.setAttribute('colspan',3);
		td.textContent="Shipping:";
		tr.appendChild(td);

		txt=findEle('.//span[@class="amount"]',6,cart);
		td=make('td');
		td.textContent=txt.snapshotItem(1).textContent.replace(/(\s|\t|\n)/g,'')
		tr.appendChild(td);

		tbody.appendChild(tr);

		cart=findEle('.//table[@class="applied-code"]/tbody/tr',6,false);
		for(i=0;i<cart.snapshotLength;i++){
			tr=make('tr');
			item=cart.snapshotItem(i);
			td=make('td');
			td.setAttribute('colspan',3);
			td.textContent='Promo Code: '+findEle('./td/strong',9,item).textContent;
			tr.appendChild(td);
			td=make('td');
			td.textContent=findEle('./td[@class="discount"]',9,item).textContent;
			tr.appendChild(td);
			tbody.appendChild(tr);
		}
		tr=make('tr');

		td=make('td');
		td.setAttribute('colspan',3);
		td.textContent="Grand Total:";
		tr.appendChild(td);

		td=make('td');
		td.textContent=findEle('.//td[@class="grand-total"]/span[@class="amount"]',9,false).textContent.replace(/(\s|\t|\n)/g,'')
		tr.appendChild(td);

		tbody.appendChild(tr);
		tr=make('tr');
		if(mir.length>0){
			td=make('td');
			td.setAttribute('colspan',2);
			td.appendChild(document.createTextNode('There are '+mir.length+' Mail-in Rebates: '));
			for(i=0;i<mir.length;i++){
				td.appendChild(mir[i]);
				if(i+1<mir.length){
					td.appendChild(document.createTextNode(" | "));
				}
			}
			tr.appendChild(td);
			
		}
		
		a=make('a');
		a.target="_blank";
		a.href='http://secure.newegg.com/Shopping/AddToCart.aspx?Submit=ADD&ItemList='+items.join(',');
		a.textContent='Add all to cart';
		td=make('td');
		td.align='right';
		td.setAttribute('colspan',mir.length>0?2:4);
		td.appendChild(a)
		tr.appendChild(td);
		tbody.appendChild(tr);
		
		div=make('div');
		div.appendChild(table);

		window.open('data:text/html;charset=utf-8,'+encodeURIComponent('<html><head><title>HTML Code to Post</title><head>'+
			'<body>If you would like to readable HTML code, paste it in the <a href="http://tools.arantius.com/tabifier">Tabifier</a>.<br/>'+
			'<input type="text" style="width:100%;" onclick="this.select();" readonly="readonly" id="txtBox"/>Copy &amp; Paste the above code.<br/>'+
			'<center><fieldset style="display:inline;border-radius:5px;text-align:left;" id="preview"><legend>Preview</legend>'+
			'</fieldset></center></body></html>')).addEventListener('load',function(){
			this.document.getElementById('txtBox').value=div.innerHTML;
			this.document.getElementById('preview').appendChild(div);
		},false);
	},false);
	holder.snapshotItem(1).appendChild(btn);
}

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址