セキュリティへの影響により、JavaScript でこれを行うことはできません。Chrome からこれを行うことができる他のタイプの Google 拡張機能/開発 API はありますか?
質問する
8050 次
1 に答える
4
はい、マウスを制御する Pointer Lock API があります。Pointer Lock API のリファレンスとしてこのコードを確認してください。
デモンストレーション
http://www.google.co.in/に移動し、Google のロゴをクリックします。このコードをカスタマイズして、マウスの動きとアクションを制御できます。
マニフェスト.json
コンテンツ スクリプトを追加し、ページのすべての権限を設定します。
{
"name":"Pointer Lock",
"description":"http://stackoverflow.com/questions/14896728/chrome-extension-to-control-mouse-keyword",
"version":"1",
"manifest_version":2,
"content_scripts": [
{
"matches": ["http://www.google.co.in/"],
"js": ["myscript.js"]
}
],
"permissions":["<all_urls>"]
}
myscript.js
このコードはポインタの動きをロックします。
//Check whether browser supports locking or not
var havePointerLock = 'webkitPointerLockElement' in document;
//Get some random element in http://www.google.co.in/ page
var element = document.getElementById("hplogo");
//Bind an event Listener
element.addEventListener("click", function () {
if (havePointerLock) {
// Ask the browser to lock the pointer
element.requestPointerLock = element.webkitRequestPointerLock;
element.requestPointerLock();
//Register lock change callback
document.addEventListener('webkitpointerlockchange', changeCallback, false);
//Register callback for all errors
document.addEventListener('webkitpointerlockerror', errorCallback, false);
} else {
alert("Your browser does not support Pointer Lock, Please Upgrade it");
}
});
function moveCallback(e) {
//Track all mouse movements
console.log("Mouse Moved ...");
console.log(e.webkitMovementX);
console.log(e.webkitMovementY);
}
function changeCallback() {
//Check for element whether locked is expected element or not
if (document.webkitPointerLockElement == element) {
// Pointer was just locked
// Enable the mousemove listener
document.addEventListener("mousemove", moveCallback, false);
} else {
// Pointer was just unlocked
// Disable the mousemove listener
document.removeEventListener("mousemove", moveCallback, false);
}
}
function errorCallback(e) {
//Log Errors
console.log(e);
}
参照
于 2013-02-17T11:10:07.177 に答える