web-dev-qa-db-fra.com

Extension Google Chrome - Comment activer/désactiver JavaScript?

Est-il possible de activer JavaScript/désactiver avec une extension de Google Chrome faite par soi-même

Par exemple, dans le navigateur Opera, il existe de simples possibilités de le faire avec des widgets, boutons créés par l'utilisateur , etc., mais je n'ai trouvé aucune solution pour le faire dans Chrome (ma première source était le _ { documentations des extensions officielles de Google Chrome ).

Un aspect étrange est que j'ai besoin de JavaScript pour exécuter l'extension elle-même ... Si je peux désactiver JavaScript avec une extension, puis-je quand même utiliser JavaScript dans mon extension après l'avoir fait?


Modifier: 

Il est déjà possible de le faire via chrome.contentSettings.javascript _!
Voir cet exemple qui montre comment l’utiliser (extension Quick JavaScript Switcher, qui mlb _ ​​ lié ici ).

41
Sk8erPeter

C'est maintenant possible avec l'API ContentSettings,
et il existe une extension appelée Quick Javascript Switcher qui active/désactive javascript à la volée: https://github.com/maximelebreton/quick-javascript-switcher

QJS sur la boutique en ligne Chrome: https://chrome.google.com/webstore/detail/geddoclleiomckbhadiaipdggiiccfje

Prendre plaisir !

seo: désactiver l'extension javascript chrome

54
mlb

Il semble actuellement que les extensions ne puissent pas désactiver la prise en charge de JavaScript. Il existe même une demande de fonctionnalité pour cela sur le site de suivi de Chromium. Nous devons être patients et attendre que Google décide de soutenir cela.

4
mlemos

Il est maintenant possible avec la version finale de chrome (à partir de chrome 16) d'activer et de désactiver le script Java à partir d'une extension.

Voici une extension qui fait justement cela:

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

1
Myster

Actuellement, nous ne pouvons PAS accéder à chrome: // paramètres/contenu data avec votre extension Chrome.

Dans mon code, lorsque l'onglet "chrome: // paramètres/contenu" est créé, l'alerte (0) fonctionne PAS et fonctionne. et toujours obtenir l'erreur suivante:

Erreur lors de tabs.executeScript: Impossible d'accéder au contenu de l'URL "chrome: // paramètres/contenu". Extension le manifeste doit demander l'autorisation à accéder à cet hôte.

_ {mais lorsque l'onglet "http://www.google.com.hk" est créé, l'alerte (0) fonctionne.

Je pense donc que nous ne pouvons PAS accéder à chrome: // paramètres/* données:

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",
        "*://*/*"
  ]
}
1
Wen Qi

C’est la seule façon qui a fonctionné pour moi d’empêcher l’extension Chrome d’exécuter javascript. Collez ce code:

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();
0
Nadav B