Javascript 创建一个简单的Chrome扩展来删除文本选择和右键单击保护?

Javascript 创建一个简单的Chrome扩展来删除文本选择和右键单击保护?,javascript,google-chrome,dom,google-chrome-extension,getelementsbytagname,Javascript,Google Chrome,Dom,Google Chrome Extension,Getelementsbytagname,我正在尝试制作一个非常简单的Chrome扩展,它可以简单地删除网页上的任何文本选择和/或右键单击保护。不幸的是,内容脚本没有对网页进行任何更改 我的内容脚本包括: var elements = document.getElementsByTagName("*"); for (var i = 0; i < elements.length; i++) { elements[i].oncontextmenu = null; elements[i].onselectstart =

我正在尝试制作一个非常简单的Chrome扩展,它可以简单地删除网页上的任何文本选择和/或右键单击保护。不幸的是,内容脚本没有对网页进行任何更改

我的内容脚本包括:

var elements = document.getElementsByTagName("*");

for (var i = 0; i < elements.length; i++) {
    elements[i].oncontextmenu = null;
    elements[i].onselectstart = null;
}
但是,当我在内容脚本中使用此代码块时:

var elements = document.getElementsByTagName("*");

for (var i = 0; i < elements.length; i++) {
    console.log(elements[i]);
}

所有元素都已打印,这意味着变量肯定正在创建中。有什么想法吗?

您是否尝试过等待DOM内容加载?例如,如果浏览器初始化选项卡后立即读取代码,则页面的元素可能尚未生成其标记并加载到DOM中。我的建议是这样做

document.addEventListener('DOMContentLoaded', function () {
    for (var i = 0, items = document.body.getElementsByTagName('*'); i < items.length; i++) {
        console.log(items[i]);

    };
}, false

嗨,谢谢你的回复。不幸的是,在使用代码时,控制台中没有显示任何内容。此外,我认为问题不在于没有加载DOM内容,正如我使用console.log的第二个示例所示。还有其他想法吗?您的扩展是否能够从目标页面获取元素?例如,您可以使用开发工具从控制台内联命令中获取元素,但脚本是否可能对它们视而不见?我可能没有清楚地解释这个问题:当我在内容脚本中使用第二个示例而不是第一个代码块时,所有元素都会打印出来,这意味着脚本肯定会被注入到页面中。我只在尝试使用oncontextmenu和onselectstart时遇到问题。还有什么方法可以使用这些事件?如果您尝试使用addEventListener方法会怎么样?它可能不会太多地改变结果,但可能是元素[i].addEventListener'contextmenu',Function{e=null;};。不幸的是,没有运气。我会继续四处寻找更多可能的解决方案,但还是要感谢您的帮助。