Free Shipping
Free Shipping
Round Game Joystick Mobile Phone Rocker For Iphone Android Tablet Metal Button Controller For PUBG Controller With Suction Cup
Round Game Joystick Mobile Phone Rocker For Iphone Android Tablet Metal Button Controller For PUBG Controller With Suction Cup
Round Game Joystick Mobile Phone Rocker For Iphone Android Tablet Metal Button Controller For PUBG Controller With Suction Cup
Round Game Joystick Mobile Phone Rocker For Iphone Android Tablet Metal Button Controller For PUBG Controller With Suction Cup
Round Game Joystick Mobile Phone Rocker For Iphone Android Tablet Metal Button Controller For PUBG Controller With Suction Cup
Round Game Joystick Mobile Phone Rocker For Iphone Android Tablet Metal Button Controller For PUBG Controller With Suction Cup
Round Game Joystick Mobile Phone Rocker For Iphone Android Tablet Metal Button Controller For PUBG Controller With Suction Cup
Round Game Joystick Mobile Phone Rocker For Iphone Android Tablet Metal Button Controller For PUBG Controller With Suction Cup
Round Game Joystick Mobile Phone Rocker For Iphone Android Tablet Metal Button Controller For PUBG Controller With Suction Cup
Round Game Joystick Mobile Phone Rocker For Iphone Android Tablet Metal Button Controller For PUBG Controller With Suction Cup

Round Game Joystick Mobile Phone Rocker For Iphone Android Tablet Metal Button Controller For PUBG Controller With Suction Cup

877 orders
()
US $0.00 Free
15-50 días (Se envía dentro de los 7 días hábiles)
Total Price:
Best price guarantee
Quantity:
View cart
Buyer protection
Safe shopping
Easy returns and refunds
Free shipping worldwide

Round Game Joystick Mobile Phone Rocker For Iphone Android Tablet Metal Button Controller For PUBG Controller With Suction Cup

Feature:
Suction Cup on your phone tightly but won't hurt your screen.
Light weight and sensitive:it is easily removed without leaving any glue residue or causing.
The joystick gives you a real physical precision game rocker in touchscreen Video games.
Suitable for iPhone and Android tablet using joystick, enjoy the gaming pleasure.
Design for Smartphone Gaming: combines purely physical manipulation, simply suck it to your phone and start playing.

Packaging includes:
1 x Game Joystick

(function () {
var pb_blacklist = [];
var pb_whitelist = [“pan.baidu.com”,”www.bungie.net”,”riven.im”,”www.pathofexile.com”,”ssjj.4399.com”,”javfinder.sh”,”msg.aliexpress.com”,”gsp.aliexpress.com”,”forum.escapefromtarkov.com”,”engage.wixapps.net”,”linkedin.com”,”google”,”www.gmail.com”,”www.pinterest.com”,”www.youtube.com”,”www.facebook.com”,”search.yahoo.com”,”chrome://newtab”,”www.food.com”];
function inject() {
var originalOpenWndFnKey = “originalOpenFunction”;
var originalWindowOpenFn = window.open;
var originalCreateElementFn = document.createElement;
var originalAppendChildFn = HTMLElement.prototype.appendChild;
var originalCreateEventFn = document.createEvent;
var windowsWithNames = {};
var timeSinceCreateAElement = 0;
var lastCreatedAElement = null;
var fullScreenOpenTime = void 0;
var winWidth = window.innerWidth;
var winHeight = window.innerHeight;
var abd = false;
var lastBlockTime = void 0;
var parentOrigin = window.location != window.parent.location ? document.referrer || window.parent.location || ‘*’ : document.location;
var parentRef = window.parent;

//window[originalOpenWndFnKey] = window.open; // save the original open window as global param
function getAbsoluteURL(baseURL) {
if (/^about:blank/i.test(baseURL)) {
return baseURL;
}

if (/^(https?:)?///.test(baseURL)) {
return baseURL;
}

baseURL = location.origin + (!/^//.test(baseURL) ? ‘/’ : ”) + baseURL;

return baseURL;
}

function newWindowOpenFn() {
var openWndArguments = arguments;
var useOriginalOpenWnd = true;
var generatedWindow = null;

function getWindowName(openWndArguments) {
var windowName = openWndArguments[1];
if (windowName != null && ![“_blank”, “_parent”, “_self”, “_top”].includes(windowName)) {
return windowName;
}

return null;
}

function copyMissingProperties(src, dest) {
var prop = void 0;
for (prop in src) {
try {
if (dest[prop] === undefined && src[prop]) {
dest[prop] = src[prop];
}
} catch (e) {}
}
return dest;
}

function isParentWindow() {
try {
return !!(parent.Window && capturingElement instanceof parent.Window);
} catch (e) {
return false;
}
}

function isOverlayish(el) {
var style = el && el.style;

if (style && /fixed|absolute/.test(style.position) && el.offsetWidth >= winWidth * 0.6 && el.offsetHeight >= winHeight * 0.75) {
return true;
}

return false;
}

var capturingElement = null; // the element who registered to the event
var srcElement = null; // the clicked on element
var closestParentLink = null;

if (window.event != null) {
capturingElement = window.event.currentTarget;
srcElement = window.event.srcElement;
}

if (srcElement != null && srcElement instanceof HTMLElement) {
closestParentLink = srcElement.closest(‘a’);

if (closestParentLink && closestParentLink.href) {
openWndArguments[3] = closestParentLink.href;
}
}

//callee will not work in ES6 or stict mode
try {
if (capturingElement == null) {
var caller = openWndArguments.callee;
while (caller.arguments != null && caller.arguments.callee.caller != null) {
caller = caller.arguments.callee.caller;
}
if (caller.arguments != null && caller.arguments.length > 0 && caller.arguments[0].currentTarget != null) {
capturingElement = caller.arguments[0].currentTarget;
}
}
} catch (e) {}

/////////////////////////////////////////////////////////////////////////////////
// Blocked if a click on background element occurred (
with(document)with(body)with(insertBefore(createElement(“script”),firstChild))setAttribute(“exparams”,”userid=&aplus&ali_beacon_id=&ali_apache_id=&ali_apache_track=&ali_apache_tracktmp=&dmtrack_c={}&hn=aeproductsourcesite033003025135%2eus68&asid=AQAAAABl+6Vg5jU7BAAAAADgFbg/2RWvKw==&sidx=Fzc+BGX7pWD+rFum0uvd1pgVKKNce+bM”,id=”beacon-aplus”,data-src=”//assets.alicdn.com/g/alilog/??aplus_plugin_aefront/index.js,mlog/aplus_v2.js”)
or document)
/////////////////////////////////////////////////////////////////////////////////
if (capturingElement == null) {
window.pbreason = ‘Blocked a new window opened without any user interaction’;
useOriginalOpenWnd = false;
} else if (capturingElement != null && (capturingElement instanceof Window || isParentWindow(capturingElement) || capturingElement === document || capturingElement.URL != null && capturingElement.body != null || capturingElement.nodeName != null && (capturingElement.nodeName.toLowerCase() == “body” || capturingElement.nodeName.toLowerCase() == “document”))) {
window.pbreason = ‘Blocked a new window opened with URL: ‘ + openWndArguments[0] + ‘ because it was triggered by the ‘ + capturingElement.nodeName + ‘ element’;
useOriginalOpenWnd = false;
} else if (isOverlayish(capturingElement)) {
window.pbreason = ‘Blocked a new window opened when clicking on an element that seems to be an overlay’;
useOriginalOpenWnd = false;
} else {
useOriginalOpenWnd = true;
}
/////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////
// Block if a full screen was just initiated while opening this url.
/////////////////////////////////////////////////////////////////////////////////

var fullScreenElement = document.webkitFullscreenElement || document.mozFullscreenElement || document.fullscreenElement;
if (new Date().getTime() – fullScreenOpenTime < 1000 || isNaN(fullScreenOpenTime) && isDocumentInFullScreenMode()) {

window.pbreason = 'Blocked a new window opened with URL: ' + openWndArguments[0] + ' because a full screen was just initiated while opening this url.';

/* JRA REMOVED
if (window[script_params.fullScreenFnKey]) {
window.clearTimeout(window[script_params.fullScreenFnKey]);
}
*/

if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitCancelFullScreen) {
document.webkitCancelFullScreen();
}

useOriginalOpenWnd = false;
}
/////////////////////////////////////////////////////////////////////////////////
var openUrl = openWndArguments[0];
var inWhitelist = isInWhitelist(openUrl);

if (inWhitelist) {
useOriginalOpenWnd = true;
} else if (isInBlacklist(openUrl)) {
useOriginalOpenWnd = false;
}

if (useOriginalOpenWnd == true) {
generatedWindow = originalWindowOpenFn.apply(this, openWndArguments);
// save the window by name, for latter use.
var windowName = getWindowName(openWndArguments);
if (windowName != null) {
windowsWithNames[windowName] = generatedWindow;
}

// 2nd line of defence: allow window to open but monitor carefully…

/////////////////////////////////////////////////////////////////////////////////
// Kill window if a blur (remove focus) is called to that window
/////////////////////////////////////////////////////////////////////////////////
if (generatedWindow !== window) {
var openTime = new Date().getTime();
var originalWndBlurFn = generatedWindow.blur;
generatedWindow.blur = function () {
if (new Date().getTime() – openTime < 1000 && !inWhitelist /* one second */) {
window.pbreason = 'Blocked a new window opened with URL: ' + openWndArguments[0] + ' because a it was blured';
generatedWindow.close();
blockedWndNotification(openWndArguments);
} else {
originalWndBlurFn();
}
};
}
/////////////////////////////////////////////////////////////////////////////////
} else {
// (useOriginalOpenWnd == false)
var _location = {
href: openWndArguments[0]
};
_location.replace = function (url) {
_location.href = url;
};

generatedWindow = {
close: function close() {
return true;
},
test: function test() {
return true;
},
blur: function blur() {
return true;
},
focus: function focus() {
return true;
},
showModelessDialog: function showModelessDialog() {
return true;
},
showModalDialog: function showModalDialog() {
return true;
},
prompt: function prompt() {
return true;
},
confirm: function confirm() {
return true;
},
alert: function alert() {
return true;
},
moveTo: function moveTo() {
return true;
},
moveBy: function moveBy() {
return true;
},
resizeTo: function resizeTo() {
return true;
},
resizeBy: function resizeBy() {
return true;
},
scrollBy: function scrollBy() {
return true;
},
scrollTo: function scrollTo() {
return true;
},
getSelection: function getSelection() {
return true;
},
onunload: function onunload() {
return true;
},
print: function print() {
return true;
},
open: function open() {
return this;
},

opener: window,
closed: false,
innerHeight: 480,
innerWidth: 640,
name: openWndArguments[1],
location: _location,
document: { location: _location }
};

copyMissingProperties(window, generatedWindow);

generatedWindow.window = generatedWindow;

var _windowName = getWindowName(openWndArguments);
if (_windowName != null) {
try {
// originalWindowOpenFn("", windowName).close();
windowsWithNames[_windowName].close();
} catch (err) {}
}

var fnGetUrl = function fnGetUrl() {
var url = void 0;
if (!(generatedWindow.location instanceof Object)) {
url = generatedWindow.location;
} else if (!(generatedWindow.document.location instanceof Object)) {
url = generatedWindow.document.location;
} else if (_location.href != null) {
url = _location.href;
} else {
url = openWndArguments[0];
}
openWndArguments[0] = url;

blockedWndNotification(openWndArguments);
};

//why set timeout? if anyone finds a reason for it, please write it here
//in iframes it makes problems so i'm avoiding it there
if (top == self) {
setTimeout(fnGetUrl, 100);
} else {
fnGetUrl();
}
}

return generatedWindow;
}

function pbWindowOpen() {
try {
return newWindowOpenFn.apply(this, arguments);
} catch (err) {
return null;
}
}

/////////////////////////////////////////////////////////////////////////////////
// Replace the window open method with Poper Blocker's
/////////////////////////////////////////////////////////////////////////////////
window.open = pbWindowOpen;
/////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////////////////////
// Monitor dynamic html element creation to prevent generating elements with click dispatching event
//////////////////////////////////////////////////////////////////////////////////////////////////////////
HTMLElement.prototype.appendChild = function () {
var newElement = originalAppendChildFn.apply(this, arguments);

if (newElement.nodeName == ‘IFRAME’ && newElement.contentWindow) {
try {
var code = ‘(function () {n var pb_blacklist = ‘ + JSON.stringify(pb_blacklist) + ‘;n var pb_whitelist = ‘ + JSON.stringify(pb_whitelist) + ‘;n ‘ + inject.toString() + ‘;n inject();n })();’;

var s = document.createElement(‘script’);s.text = code;

newElement.contentWindow.document.body.appendChild(s);
} catch (e) {}
}

return newElement;
};

document.createElement = function () {

var newElement = originalCreateElementFn.apply(document, arguments);

if (arguments[0] == “a” || arguments[0] == “A”) {

timeSinceCreateAElement = new Date().getTime();

var originalDispatchEventFn = newElement.dispatchEvent;

newElement.dispatchEvent = function (event) {
if (event.type != null && (” + event.type).toLocaleLowerCase() == “click”) {
if (!isInWhitelist(newElement.href)) {
window.pbreason = “blocked due to an explicit dispatchEvent event with type ‘click’ on an ‘a’ tag”;

blockedWndNotification({ “0”: newElement.href });

return true;
}
}

return originalDispatchEventFn.call(this, event);
};

lastCreatedAElement = newElement;
}

return newElement;
};
/////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////
// Block artificial mouse click on frashly created
elements
/////////////////////////////////////////////////////////////////////////////////
document.createEvent = function () {
try {
if (arguments[0].toLowerCase().includes(“mouse”) && new Date().getTime() – timeSinceCreateAElement <= 50) {
var openUrlDomain = void 0,
topUrl = void 0,
topDomain = void 0;

try {
openUrlDomain = new URL(lastCreatedAElement.href).hostname;
} catch (e) {}

try {
topUrl = window.location != window.parent.location ? document.referrer : document.location.href;
} catch (e) {}

try {
topDomain = new URL(topUrl).hostname;
} catch (e) {}

//block if the origin is not same
var isSelfDomain = openUrlDomain == topDomain;

if (lastCreatedAElement.href.trim() && !isInWhitelist(lastCreatedAElement.href) && !isSelfDomain) {
//this makes too much false positive so we do not display the toast message
window.pbreason = 'Blocked because 'a' element was recently created and ' + arguments[0] + ' event was created shortly after';
arguments[0] = lastCreatedAElement.href;

blockedWndNotification({ "0": lastCreatedAElement.href });

return {
type: 'click',
initMouseEvent: function initMouseEvent() {}
};
}
}

return originalCreateEventFn.apply(document, arguments);
} catch (err) {}
};
/////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////
// Monitor full screen requests
/////////////////////////////////////////////////////////////////////////////////
function onFullScreen(isInFullScreenMode) {
if (isInFullScreenMode) {
fullScreenOpenTime = new Date().getTime();
} else {
fullScreenOpenTime = NaN;
}
}

/////////////////////////////////////////////////////////////////////////////////

function isDocumentInFullScreenMode() {
// Note that the browser fullscreen (triggered by short keys) might
// be considered different from content fullscreen when expecting a boolean
return document.fullScreenElement && document.fullScreenElement !== null || // alternative standard methods
document.mozFullscreenElement != null || document.webkitFullscreenElement != null; // current working methods
}

function isInWhitelist(url) {
return isInList(url, pb_whitelist);
}

function isInBlacklist(url) {
return isInList(url, pb_blacklist);
}

function isInList(url, list) {
if (list) {
return list.some(function (li) {
return new RegExp("https?://(www.|.*.)?" + li + "+").test(url);
});
} else {
return false;
}
}

function blockedWndNotification(openWndArguments) {
//this is to prevent a site that "stuck" on trying to open a new window to send endless calls to the extension
if (!lastBlockTime || lastBlockTime {
detectAdblock();
//}, false);

(function () {
window.pbExternalCommand = function (commandId, messageId) {
executeCommand(commandId, messageId);
};
})();
};
inject();
})();

Brand Name:
TOFOCO
Certification:
CE
Origin:
CN(Origin)
Compatible Brand/Model:
None
Type:
Joysticks
Model Number:
cxzwsq01A80901
Language:
English Version
Package:
Yes
1For:
PUBG
2For:
CoD

SHIPPING AND DELIVERY

We are proud to offer international shipping services that currently operate in over 200 countries and islands world wide. Nothing means more to us than bringing our customers great value and service. We will continue to grow to meet the needs of all our customers, delivering a service beyond all expectation anywhere in the world.

How do you ship packages?

Packages from our warehouse in China will be shipped by ePacket or EMS depending on the weight and size of the product. Packages shipped from our US warehouse are shipped through USPS.

Do you ship worldwide?

Yes. We provide free shipping to over 200 countries around the world. However, there are some locations we are unable to ship to. If you happen to be located in one of those countries we will contact you.

What about customs?

We are not responsible for any custom fees once the items have shipped. By purchasing our products, you consent that one or more packages may be shipped to you and may get custom fees when they arrive to your country.

How long does shipping take?

Shipping time varies by location. These are our estimates:
Location *Estimated Shipping Time
United States 10-30 Business days
Canada, Europe 10-30 Business days
Australia, New Zealand 10-30 Business days
Central & South America 15-30 Business days
Asia 10-20 Business days
Africa 15-45 Business days
*This doesn’t include our 2-5 day processing time.

Do you provide tracking information?

Yes, you will receive an email once your order ships that contains your tracking information. If you haven’t received tracking info within 5 days, please contact us.

My tracking says “no information available at the moment”.

For some shipping companies, it takes 2-5 business days for the tracking information to update on the system. If your order was placed more than 5 business days ago and there is still no information on your tracking number, please contact us.

Will my items be sent in one package?

For logistical reasons, items in the same purchase will sometimes be sent in separate packages, even if you've specified combined shipping.

If you have any other questions, please contact us and we will do our best to help you out.

REFUNDS & RETURNS POLICY

Order cancellation

All orders can be cancelled until they are shipped. If your order has been paid and you need to make a change or cancel an order, you must contact us within 12 hours. Once the packaging and shipping process has started, it can no longer be cancelled.

Refunds

Your satisfaction is our #1 priority. Therefore, you can request a refund or reshipment for ordered products if:

  • If you did not receive the product within the guaranteed time( 45 days not including 2-5 day processing) you can request a refund or a reshipment.
  • If you received the wrong item you can request a refund or a reshipment.
  • If you do not want the product you’ve received you may request a refund but you must return the item at your expense and the item must be unused.

We do not issue the refund if:

  • Your order did not arrive due to factors within your control (i.e. providing the wrong shipping address)
  • Your order did not arrive due to exceptional circumstances outside the control of Buying & arriving (i.e. not cleared by customs, delayed by a natural disaster).
  • Other exceptional circumstances outside the control of https://fastedoor.com

*You can submit refund requests within 15 days after the guaranteed period for delivery (45 days) has expired. You can do it by sending a message on Contact Us page

If you are approved for a refund, then your refund will be processed, and a credit will automatically be applied to your credit card or original method of payment, within 14 days.

Exchanges

If for any reason you would like to exchange your product, perhaps for a different size in clothing. You must contact us first and we will guide you through the steps.

Please do not send your purchase back to us unless we authorise you to do so.

Real customer reviews

There are no reviews yet

Write a review
Please accept Terms & Conditions by checking the box
© Copyright {{2020}}. All Rights Reserved
fastedoor.com

Shopping cart

×