Google chrome extension Chrome扩展:空白的新选项卡+;地址栏焦点

Google chrome extension Chrome扩展:空白的新选项卡+;地址栏焦点,google-chrome-extension,setfocus,address-bar,Google Chrome Extension,Setfocus,Address Bar,每次打开新选项卡时,我都会得到一个空白页,不幸的是,新选项卡打开后,地址栏没有聚焦 我更改了新页面内容,以调度击键9来模拟tab键。这会导致浏览器将焦点放在地址栏上,但无法正常工作 <title>&#65279;</title> <script> function init() { var k = 9; var oEvent = document.createEvent('KeyboardEvent'); // Chromi

每次打开新选项卡时,我都会得到一个空白页,不幸的是,新选项卡打开后,地址栏没有聚焦

我更改了新页面内容,以调度击键9来模拟tab键。这会导致浏览器将焦点放在地址栏上,但无法正常工作

<title>&#65279;</title>
<script>
function init() {
    var k = 9;

    var oEvent = document.createEvent('KeyboardEvent');

    // Chromium Hack
    Object.defineProperty(oEvent, 'keyCode', {
                get : function() {
                    return this.keyCodeVal;
                }
    });     
    Object.defineProperty(oEvent, 'which', {
                get : function() {
                    return this.keyCodeVal;
                }
    });     

    if (oEvent.initKeyboardEvent) {
        oEvent.initKeyboardEvent("keydown", true, true, document.defaultView, false, false, false, false, k, k);
    } else {
        oEvent.initKeyEvent("keydown", true, true, document.defaultView, false, false, false, false, k, 0);
    }

    oEvent.keyCodeVal = k;

    if (oEvent.keyCode !== k) {
        alert("keyCode mismatch " + oEvent.keyCode + "(" + oEvent.which + ")");
    }

    document.dispatchEvent(oEvent);
}
</script>
<body onload="init()">
</body>
;
函数init(){
var k=9;
var oEvent=document.createEvent('KeyboardEvent');
//铬黑
Object.defineProperty(oEvent,'keyCode'{
get:function(){
返回此.keyCodeVal;
}
});     
Object.defineProperty(oEvent,“which”{
get:function(){
返回此.keyCodeVal;
}
});     
if(oEvent.initKeyboardEvent){
oEvent.initKeyboardEvent(“keydown”、true、true、document.defaultView、false、false、false、k、k);
}否则{
oEvent.initKeyEvent(“keydown”,true,true,document.defaultView,false,false,false,false,k,0);
}
oEvent.keyCodeVal=k;
如果(oEvent.keyCode!==k){
警报(“keyCode不匹配”+oEvent.keyCode+”(“+oEvent.which+”));
}
文件。调度事件(oEvent);
}
是否有其他方法可以这样做?

扩展中的问题
  • 它没有使用更新的清单版本
  • 使其符合内容脚本策略
在消除了上述问题后,我让您的代码正常工作

工作版本 manifest.json 添加了清单版本

{
    "update_url": "http://clients2.google.com/service/update2/crx",
    "name": "Empty New Tab Page",
    "version": "1.1",
    "description": "With this extension, new tabs display a blank page instead of the usual new tab page with thumbnails.",
    "icons": {
        "128": "icon_128.png"
    },
    "chrome_url_overrides": {
        "newtab": "empty_ntp.html"
    },
    "manifest_version": 2
}
空的\u ntp.html 添加了
标签以符合CSP

<!--
Chrome insists on putting "chrome://newtab"
as title
if there 's no title,
instead of putting something useful like a localized "New Tab" there.

As a workaround, use a space as title. An empty tab is better than one saying
something cryptic. Chrome puts "chrome://newtab" if the title is whitespace too,
but it doesn'
t recognize all the whitespace characters listed at
http: //en.wikipedia.org/wiki/Space_(punctuation) :-)
-->
<
title > & #65279;</title>
<script src= "empty.js" > < /script>
工具书类
function init() {
    var k = 9;

    var oEvent = document.createEvent('KeyboardEvent');

    // Chromium Hack
    Object.defineProperty(oEvent, 'keyCode', {
        get: function () {
            return this.keyCodeVal;
        }
    });
    Object.defineProperty(oEvent, 'which', {
        get: function () {
            return this.keyCodeVal;
        }
    });

    if (oEvent.initKeyboardEvent) {
        oEvent.initKeyboardEvent("keydown", true, true, document.defaultView, false, false, false, false, k, k);
    } else {
        oEvent.initKeyEvent("keydown", true, true, document.defaultView, false, false, false, false, k, 0);
    }

    oEvent.keyCodeVal = k;

    if (oEvent.keyCode !== k) {
        alert("keyCode mismatch " + oEvent.keyCode + "(" + oEvent.which + ")");
    }

    document.dispatchEvent(oEvent);
}//Added an Event Listener
document.addEventListener("DOMContentLoaded", function () {
    init();
});