1

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

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

EditII:与此同时,我测试了一些内容脚本,是的,即使关闭了 javascript,它们中的一些仍然可以工作。正如我最初所说,我的脚本最初也是执行的,但不会保持它的功能。为了更好地理解应该发生的事情的一个非常苗条的版本。有没有办法让这些功能保持运行,还是因为它们被注入站点太深而无望?

清单.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
 } 

内容脚本:

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');});
4

1 回答 1

0

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

于 2013-06-13T13:48:02.353 回答