阻止javascript时保持google chrome扩展内容脚本工作

阻止javascript时保持google chrome扩展内容脚本工作,javascript,jquery,google-chrome-extension,Javascript,Jquery,Google Chrome Extension,我现在开始摆弄谷歌浏览器的扩展。我的扩展目前确实在每个网站中注入了一些javascript,这会创建一个带有一些函数的侧栏(虽然这些函数并不重要)。当为这些网站启用javascript时,一切正常,但当它被阻止时停止工作。我通过chrome.tabs.executeScript注入代码,在每次启动页面时(创建侧边栏时)都会加载代码,但此时它只是一个简单的div(正如我所说的,没有一个函数可以继续工作)。我以前尝试过注入一个标记,当javascript被阻止时,它什么也不做(因此没有创建侧栏)。。

我现在开始摆弄谷歌浏览器的扩展。我的扩展目前确实在每个网站中注入了一些javascript,这会创建一个带有一些函数的侧栏(虽然这些函数并不重要)。当为这些网站启用javascript时,一切正常,但当它被阻止时停止工作。我通过chrome.tabs.executeScript注入代码,在每次启动页面时(创建侧边栏时)都会加载代码,但此时它只是一个简单的div(正如我所说的,没有一个函数可以继续工作)。我以前尝试过注入一个标记,当javascript被阻止时,它什么也不做(因此没有创建侧栏)。。所以这显然是有区别的,但对我来说都不起作用

据我所知,contentScripts是如何工作的,它们应该在一个孤立的世界中运行,因此不应该受到站点javascript选项的影响(因为扩展的每个其他部分——后台页面等等——仍然在工作)。我在网上搜索了答案,但没有找到任何关于这个问题的答案(我发现了一个错误报告,但没有得到正确的回答)。有人知道如何在网站的javascript被阻止(比如特殊权限等)时保持注入的代码运行吗?还是我必须放弃我的想法?提前谢谢

与此同时,我测试了一些contentscripts,是的,即使关闭了javascript,其中一些也能继续工作。正如我最初所说,我的脚本最初也是执行的,但不会维护它的功能。为了更好地理解应该发生的事情,我们提供了一个非常简单的版本。有没有办法让这些功能继续运行,还是因为它们被注入到站点太深而毫无希望

Manifest.json

{
"name" : "Example",
"version" : "1.0.1",
"description" : "Creates a sidebar, which looses dragable() function when javascript is turned off",

"permissions" : [ "tabs" ],

"content_scripts" : [
  {
    "matches" : [ "http://*/*" ],
    "js" : [  "jquery.js", "jquery-ui.js", "contentscript.js" ],
    "run_at" : "document_end",
    "all_frames" : true
  }
],
"manifest_version": 2
 } 
contentscript:

var sidebar;

sidebar = $("<div id='example_sidebar'></div>");
sidebar.css({
  'position': 'fixed',
  'right': '0px',
  'top': '200px',
  'z-index': 9999,
  'width': '70px',
  'height': '140px',
   'background-color': 'blue'  // Confirm it shows up
 });
$('body').append(sidebar);

$(function() {
  $( "#example_sidebar" ).draggable();
});

 $("#example_sidebar")
.on( "mouseenter", function() {
  console.log('entered the div');
})
.on( "mouseleave", function() {
 console.log('left the div'); 
});

$('#example_sidebar').on('click', function() {
    console.log('clicked the div');});
var侧边栏;
边栏=$(“”);
sidebar.css({
'位置':'固定',
“右”:“0px”,
“顶部”:“200px”,
“z指数”:9999,
“宽度”:“70px”,
“高度”:“140px”,
“背景色”:“蓝色”//确认它是否显示
});
$('body')。追加(侧边栏);
$(函数(){
$(“#示例#侧栏”).draggable();
});
$(“示例侧边栏”)
.on(“mouseenter”,function(){
console.log('进入div');
})
.on(“mouseleave”,函数(){
log('left the div');
});
$(“#示例_边栏”)。在('click',function()上{
log('clicked the div');});

以防万一有人无意中发现:在禁用JavaScript时,目前无法保持contentScript的功能运行。也许这个特性永远不会实现,但谁知道呢。您仍然能够执行一些代码,例如DOM操作仍然是可能的,因此我想要插入的菜单仍然显示。

如果不进行测试,我还希望内容脚本能够运行,即使页面禁用了JS。您的内容脚本(或注入了
executeScript
的脚本)是否依赖于将
标记插入DOM?如果您需要在实际页面的上下文中对
进行评估,我认为这会失败。虽然executeScript没有明显地添加标记,但我猜它可能是基于案例背景的。正如我所说的,有趣的事实是,即使javascript被阻止,executeScript仍然会创建div,它只是缺少函数。我用一个简单的例子编辑了开始文章,这个例子和我的扩展部分有着相同的问题。我用一个实际发生的事情的精简版本再次编辑了原始文章。如果页面上禁用javascript,chrome会阻止事件触发吗?你能添加一个简单的点击处理程序记录到控制台吗?用请求的处理程序再次编辑帖子。正如您所想,chrome会停止触发事件,我的侧边栏被视为没有任何功能的普通div。