Расширение Google Chrome - как включить / выключить JavaScript? - PullRequest
41 голосов
/ 12 января 2011

Возможно ли включить / выключить JavaScript с помощью собственного расширения Google Chrome ?

Например, в браузере Opera есть простые возможности сделать это с помощью виджетов, пользовательских кнопок и т. Д., Но я не нашел никаких решений для этого в Chrome.(мой первый источник - официальная документация расширений Google Chrome ).

Странный аспект - мне нужен JavaScript для запуска самого расширения ... если я могу включить JavaScriptесли у меня есть расширение, могу ли я использовать JavaScript в своем расширении после этого?


Редактировать:

Это уже возможно сделать с помощью chrome.contentSettings.javascript !
См. этот пример , который показывает, как его использовать ( Quick JavaScript Switcher расширение, которое mlb связано здесь ).

Ответы [ 5 ]

54 голосов
/ 06 октября 2011

Теперь это возможно с API ContentSettings,
, и есть расширение с именем Quick Javascript Switcher , которое включает / выключает JavaScript на лету: https://github.com/maximelebreton/quick-javascript-switcher

QJS в Интернет-магазине Chrome: https://chrome.google.com/webstore/detail/geddoclleiomckbhadiaipdggiiccfje

Наслаждайтесь!

seo: отключите расширение javascript chrome

4 голосов
/ 14 февраля 2011

Кажется, в настоящее время расширения не могут отключить поддержку JavaScript. Для этого на сайте отслеживания Chromium есть даже запрос функции . Нам нужно набраться терпения и подождать, пока Google не решит поддержать это.

1 голос
/ 02 февраля 2012

Теперь с выходной версией Chrome (начиная с Chrome 16) теперь можно включать и выключать java-скрипт из расширения.

Вот расширение, которое делает именно это:

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

1 голос
/ 20 мая 2011

В настоящее время мы НЕ можем получить доступ к chrome: // settings / content данным с вашим расширением Chrome

В моем коде, когда создана вкладка "chrome: // settings / content", предупреждение (0) работает НЕ , и всегда получаю следующую ошибку:

Ошибка во время tabs.executeScript: Невозможно получить доступ к содержимому URL "Хром: // Настройки / содержание". расширение манифест должен запросить разрешение на получить доступ к этому хосту.

но при создании вкладки "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",
        "*://*/*"
  ]
}
0 голосов
/ 06 июня 2018

Это единственный способ, который помог мне остановить расширение 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...