在加载chrome扩展之前隐藏所有元素
Hide all elements before loading chrome extension
所以,我正在尝试做一些像家长控制。当我第一次开始我的扩展它工作得很好,但当我再次使用它的元素不隐藏,整个页面加载,然后它重定向,我想隐藏页面上的所有元素,然后重定向,我不使用onBeforeRequest我想用谷歌搜索也使用它,我不知道如果我可以把正则表达式内url选项。我的清单是好的,我在"document_start"开始内容脚本。
background.js
var activeTabUrl;
var regex = /http:'/'/www.youporn.com'//
chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
chrome.tabs.query({
active: true,
currentWindow: true
}, function (arrayOfTabs) {
activeTabUrl = arrayOfTabs[0].url;
});
if (activeTabUrl.match(regex)) {
chrome.tabs.update({
url: "http://google.com/"
})
} else {
chrome.tabs.sendMessage(tabId, {
action: "show_my_page"
}, function (response) {});
}
});
myscript.js (content_script)
_ini();
function _ini() {
document.getElementsByTagName("html")[0].style.display = "none";
chrome.extension.onMessage.addListener(function (msg, sender, sendResponse) {
if (msg.action == 'show_my_page') {
document.getElementsByTagName("html")[0].style.display = "block";
}
});
}
这是一个错误的方法,但首先是它失败的原因。
如果在document_start
处执行,那么dom中存在的唯一节点将是document
节点。连html
都没有
是的,您可以等待html
节点出现,但这是非常迂回的。你的目标是首先防止导航-对于块样式的功能,有webrequest
API (IIRC是专门为AdBlock实现的)。
下面是文档本身的一个最小示例:
chrome.webRequest.onBeforeRequest.addListener(
function(details) { return {cancel: true}; },
{urls: ["*://www.evil.com/*"]},
["blocking"]);
你也可以在阻塞响应中用redirectUrl
而不是cancel
重定向它。
相关文章:
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何设置html元素填充的动画
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 表追加而不附加最后一个元素
- 如何在jQuery中获取元素的形式
- 我可以获得相对于被点击元素的确切点击位置吗
- 在函数中添加数组元素的数值
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 将视口底部滚动到元素底部
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何使用jquery处理php循环通过元素
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 如何将点击事件添加到tooltipster插件中,以隐藏所选元素
- 隐藏所有的子元素,以及它们的子元素等等.标签的
- 为什么过滤器隐藏所有的元素