41 votes

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

Est-il possible de activer/désactiver JavaScript avec une extension Google Chrome créée par vous-même ?

Par exemple, dans le navigateur Opera, il existe des possibilités simples de le faire avec des widgets, boutons personnalisés etc., mais je n'ai pas trouvé de solution pour faire cela dans Chrome (ma première source était le site les documentations officielles des extensions Google Chrome ).

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


Edit :

Il est déjà possible de le faire via chrome.contentSettings.javascript !
Voir cet exemple qui montre comment l'utiliser ( Sélecteur rapide de JavaScript l'extension, qui mlb lié ici ).

0 votes

Vous voulez dire que votre extension doit activer le javascript du navigateur ? ou juste le désactiver pour l'extension ? sans javascript votre extension ne ferait rien...

0 votes

La première version, donc je voudrais basculer JS du navigateur - de cette façon je pourrais tester mes sites comment ceux-ci fonctionnent sans JS. Il est trop circonstanciel lors de la construction de sites d'aller dans les Options et de désactiver et réactiver JS tout le temps - il serait beaucoup plus simple si je pouvais juste l'activer et le désactiver avec un seul clic (ou une combinaison de touches de raccourci). Je sais, c'est contradictoire, car les extensions ont besoin de JavaScript... :)) Mais je me demande simplement s'il existe des solutions. Merci !

55voto

mlb Points 565

C'est désormais possible grâce à l'API ContentSettings,
et il y a une extension nommée Commutateur Javascript rapide qui active/désactive le javascript à la volée : https://github.com/maximelebreton/quick-javascript-switcher

QJS sur le Chrome Webstore : https://chrome.google.com/webstore/detail/geddoclleiomckbhadiaipdggiiccfje

Profitez-en !

seo : désactiver l'extension chrome javascript

0 votes

Wow, merci mlb ce post a été VRAIMENT utile ! J'ai essayé cette extension, et elle semble fonctionner parfaitement après avoir activé l'utilisation expérimentale de l'API ! J'ai changé la réponse acceptée par la vôtre, parce que cela semble être une vraie solution ! :)

0 votes

À propos, savez-vous quand la possibilité de modifier certains paramètres via une extension (comme celle que vous avez mentionnée) sera "définitive" (et pas seulement expérimentale) ? Merci encore une fois ! :) Je dois ajouter un autre commentaire : cette API expérimentale semble être vraiment bonne, car avec elle, on peut également ajouter un nouvel élément dans le menu contextuel du clic droit de Chrome avec une extension ! Ce serait vraiment bien si on pouvait le faire sans activer l'API expérimentale aussi :)

0 votes

Hey Sk8erPeter, depuis Chrome 16, l'API ContentSettings n'est plus expérimentale ;) Et pour votre suggestion, si je comprends bien, vous voulez le même bouton QJS mais dans le menu du clic droit ?

4voto

mlemos Points 417

Il semble qu'actuellement il ne soit pas possible pour les extensions de désactiver le support JavaScript. Il existe même un demande de fonctionnalité pour cela dans le site de suivi de Chromium. Nous devons être patients et attendre que Google décide de le prendre en charge.

0 votes

Merci pour votre réponse, mlemos ! J'ai édité mon post original, veuillez lire les modifications aussi, merci ! :) J'espère que Google nous laissera contrôler les options comme Opera (ou toute autre solution confortable serait bien) dans un futur proche.

1voto

Wen Qi Points 47

Actuellement, nous ne pouvons PAS accéder chrome://réglages/contenu données avec votre extension Chrome

Dans mon code, lorsque l'onglet "chrome://settings/content" est créé, le alert(0) fait PAS travail, et j'obtiens toujours l'erreur suivante :

Erreur pendant tabs.executeScript : Impossible d'accéder au contenu de l'url "chrome://settings/content". L'extension manifest doit demander l'autorisation d'accéder d'accéder à cet hôte.

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

Je pense donc que nous ne pouvons PAS accéder aux données chrome://settings/* :

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

1voto

Myster Points 3842

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

Voici une extension qui fait exactement cela :

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

1 votes

Merci, mais il s'agit EXACTEMENT de la même extension qui mlb mentionné ici précédemment le 6 octobre 2011 :) Regardez : stackoverflow.com/a/7673539/517705 . Mais il était utile de savoir qu'il semble déjà possible d'activer et de désactiver JS. sans l'utilisation de la API expérimentale aussi (si je ne me trompe pas), donc merci pour cela aussi ! Pour cela, vous méritez un +1 :)

0voto

Nadav B Points 527

C'est le seul moyen qui a fonctionné pour moi pour empêcher l'extension chrome d'exécuter le 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();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X