2016-03-25 50 views
0

Google Chromeから履歴を定期的に削除するためのユーザースクリプトを作成しました。私が考えることができる最も簡単な方法は、Clear Cachehttps://chrome.google.com/webstore/detail/clear-cache/cppjkneekbjaeellbfkmgnhonkkjfpdn?hl=enをインストールすることでした。履歴を削除するためのキーボードショートカットを設定できます。私が設定したショートカットはalt+9greasemonkeyまたはtampermonkeyでキーボードイベントをトリガー

私が望むウェブページを開いたときに私がalt+9イベントを引き起こすために使用するコードです。

var event = document.createEvent('Event'); 
event.initEvent('keydown', true, true); 
event.keyCode = 18&&57; 
document.body.dispatchEvent(event); 

対象のウェブサイトにアクセスしたときに履歴がクリアされない理由がわかりません。私が送ったイベントはalt+9と同じではないのですか?手動でalt+9を押すと、ショートカットが実際に機能します。

編集:またない作業を行い

// @require  http://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js 
// @grant  GM_info 

    var press = jQuery.Event("keypress"); 
press.altKey = true; 
press.which = 57; 
$("whatever").trigger(press); 

function GM_main ($) { 
    //alert ('jQuery is installed with no conflicts! The version is: ' + $.fn.jquery); 
} 

if (typeof jQuery === "function") { 
    console.log ("Running with local copy of jQuery!"); 
    GM_main (jQuery); 
} 
else { 
    console.log ("fetching jQuery from some 3rd-party server."); 
    add_jQuery (GM_main, "2.2.2"); 
} 

function add_jQuery (callbackFn, jqVersion) { 
    var jqVersion = jqVersion || "2.2.2"; 
    var D   = document; 
    var targ  = D.getElementsByTagName ('head')[0] || D.body || D.documentElement; 
    var scriptNode = D.createElement ('script'); 
    scriptNode.src = 'http://ajax.googleapis.com/ajax/libs/jquery/' 
        + jqVersion 
        + '/jquery.min.js' 
        ; 
    scriptNode.addEventListener ("load", function() { 
     var scriptNode   = D.createElement ("script"); 
     scriptNode.textContent = 
      'var gm_jQuery = jQuery.noConflict (true);\n' 
      + '(' + callbackFn.toString() + ')(gm_jQuery);' 
     ; 
     targ.appendChild (scriptNode); 
    }, false); 
    targ.appendChild (scriptNode); 
} 

答えて

2

event.keyCode = 18&&57;を試してみました。これは論理的/ブール演算であり、実際には57となります。これは18が真であるため2番目のオペランドが代入されるためです。

また、バイナリ操作18&57alt+9を表しません。 keydown 9をシミュレートするにはaltキーが押されたままで、keycodeに57を与え、alt-indicatorをtrueに設定する必要があります。あなたがwebアプリケーションを操作することができます行う

var event = new KeyboardEvent(); 
event.keyCode = 57; 
event.which = 57; 
event.altKey = true; 
event.ctrlKey = false; 
event.shiftKey= false; 
event.target = window; 
window.dispatchEvent(event); 

、しかし、することができますないアクセスブラウザの機能、これは高いセキュリティリスクを意味するであろう任意のウェブサイトで行うことができるからです。

Userscriptsはウェブサイトよりはるかに特権がありません。アドオンを開発して、ブラウザGUIに包括的なアクセス権を持つことができます。アドオンを開発するためのテンプレート/ボイラープレートがあります。これは単にJavaScriptが.xpiファイルに圧縮されたものです。

関連する問題