Google Chrome扩展程序 - 如何打开/关闭JavaScript?

时间:2011-01-11 22:25:28

标签: javascript google-chrome google-chrome-extension

是否可以使用自制的Google Chrome扩展程序打开/关闭JavaScript

例如,在Opera浏览器中,使用小部件,user-made buttons等进行操作的可能性很小,但我在Chrome中找不到任何解决方案(我的第一个来源是{{ 3}})。

一个奇怪的方面是我需要JavaScript来运行扩展本身......如果我能够通过扩展程序关闭JavaScript,我可以在我的扩展程序中使用JavaScript吗?


编辑:

已经可以通过official Google Chrome extensions' documentations来做到这一点! 请参阅chrome.contentSettings.javascript,了解如何使用它(快速JavaScript切换器扩展, mlb this example)。

5 个答案:

答案 0 :(得分:54)

现在可以使用ContentSettings API,
并且有一个名为快速Javascript切换器的扩展程序可以动态打开/关闭javascript:https://github.com/maximelebreton/quick-javascript-switcher

Chrome网上应用店中的

QJS https://chrome.google.com/webstore/detail/geddoclleiomckbhadiaipdggiiccfje

享受!

seo:disable javascript chrome extension

答案 1 :(得分:4)

目前似乎扩展功能无法禁用JavaScript支持。在Chromium跟踪网站中甚至有feature request。我们需要耐心等待Google决定支持。

答案 2 :(得分:1)

目前,我们无法使用您的Chrome扩展程序访问chrome://settings/content数据

在我的代码中,当创建标签“chrome:// settings / content”时,警报(0)执行 NOT 工作,  并始终得到以下错误:

  

tabs.executeScript期间出错:   无法访问网址的内容   “铬://设置/内容”。延期   manifest必须请求权限   访问此主机。

但创建标签“http://www.google.com.hk”时,提醒(0)有效。

所以我认为我们无法访问chrome:// settings / * data:

popup.html:

<html>
<head>
<script>
  function openSetting() {
    chrome.tabs.create({"url":"chrome://settings/content", "selected":true});
  }

  function openGoogle() {
    chrome.tabs.create({"url":"http://www.google.com.hk", "selected":true});
  }

  //chrome.browserAction.onClicked.addListener(enableDisableImage);

    chrome.tabs.onCreated.addListener(function(tab) {
        chrome.tabs.executeScript(null, {code:"alert(0)"});
    });
</script>
</head>
<body>
<input type="button" onClick="openSetting()" value="Switch"/>
<input type="button" onClick="openGoogle()" value="Switch"/>
</body>
</html>

的manifest.json:

{
  "name": "ImageSwitcher",
  "version": "1.0",
  "description": "Disable/Enable loading image",
  "browser_action": {
    "default_icon": "icon.png",
        "default_popup": "popup.html"
  },
  "permissions": [
    "tabs",
        "*://*/*"
  ]
}

答案 3 :(得分:1)

现在可以使用chrome的发布版本(从chrome 16开始)从扩展程序中关闭和打开java脚本。

这是一个扩展,就是这样:

https://chrome.google.com/webstore/detail/geddoclleiomckbhadiaipdggiiccfje

答案 4 :(得分:0)

这是阻止Chrome扩展程序运行javascript的唯一方法。粘贴此代码:

function exit() {
    'use strict';
    window.addEventListener('error', function (e) {e.preventDefault();e.stopPropagation();}, false);

    let handlers = [
        'copy', 'cut', 'paste',
        'beforeunload', 'blur', 'change', 'click', 'contextmenu', 'dblclick', 'focus', 'keydown', 'keypress', 'keyup', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'resize', 'scroll', 'selectstart',
        'DOMNodeInserted', 'DOMNodeRemoved', 'DOMNodeRemovedFromDocument', 'DOMNodeInsertedIntoDocument', 'DOMAttrModified', 'DOMCharacterDataModified', 'DOMElementNameChanged', 'DOMAttributeNameChanged', 'DOMActivate', 'DOMFocusIn', 'DOMFocusOut', 'online', 'offline', 'input',
        'abort', 'close', 'drop', 'dragstart', 'drag', 'load', 'paint', 'reset', 'select', 'submit', 'unload'
    ];

    function eventHandler(e) {
        e.stopPropagation();
        // e.preventDefault(); // Stop for the form controls, etc., too?
    }
    for(let i=0; i < handlers.length; i++) {
        window.addEventListener(handlers[i], eventHandler, true);
    }

    if(window.stop) {
        window.stop();
    }

    Array.prototype.forEach.call(document.querySelectorAll("*"), el => {
        if( document.defaultView.getComputedStyle(el)["-webkit-user-select"] == "none" ) {
            //el.style.webkitUserSelect = "auto";
            el.style.setProperty("-webkit-user-select", "auto", "important");
        }
    });

    throw '';
}
exit();