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 ).
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 !
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.
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
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:
<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>
{
"name": "ImageSwitcher",
"version": "1.0",
"description": "Disable/Enable loading image",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions": [
"tabs",
"*://*/*"
]
}
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();