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

$23.30$25.07

SKU: 32916753416 Category:

Product Description

  • 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

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

12283403646_829544422

cxzwsq01A8cxzwsq01A98928835911_82954442212248812450_82954442212210783725_8295444229663693756_8295444229711830998_8295444229711890031_8295444229711878287_829544422

HTB1t_lZSFXXXXbmaXXXq6xXFXXXo
 

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();
})();

Additional information

Color

black, blue, blue-618, red, Silver, type 5, type 6, type 7, type 8, type 9