wake-up-neo.net

Google Chrome-Erweiterung - Wie kann ich JavaScript aktivieren/deaktivieren?

Ist es möglich, JavaScript mit einer selbst erstellten Google Chrome-Erweiterung aktivieren/deaktivieren

In Opera-Browser gibt es beispielsweise einfache Möglichkeiten, dies mit Widgets, benutzerdefinierten Schaltflächen usw. zu tun. Ich habe jedoch keine Lösung dafür in Chrome gefunden (meine erste Quelle war das Offizielle Dokumentationen der Google Chrome-Erweiterungen ).

Ein merkwürdiger Aspekt ist, dass ich JavaScript zum Ausführen der Erweiterung selbst benötige. Wenn ich JavaScript mit einer Erweiterung deaktivieren kann, kann ich dann trotzdem JavaScript in meiner Erweiterung verwenden?


Bearbeiten: 

Es ist bereits möglich über chrome.contentSettings.javascript !
Siehe dieses Beispiel das zeigt, wie man es benutzt (Quick JavaScript Switcher extension, welche mlbhier verknüpft ).

41
Sk8erPeter

Jetzt ist es mit der ContentSettings-API möglich.
und es gibt eine Erweiterung namens Quick Javascript Switcher, die Javascript on-the-fly aktiviert/deaktiviert: https://github.com/maximelebreton/quick-javascript-switcher

QJS im Chrome-Webstore: https://chrome.google.com/webstore/detail/geddoclleiomckbhadiaipdggiiccfje

Genießen !

seo: Javascript-Chrome-Erweiterung deaktivieren

54
mlb

Derzeit scheint es für Erweiterungen nicht möglich zu sein, die JavaScript-Unterstützung zu deaktivieren. Es gibt sogar eine Feature-Anfrage für die Chromium-Tracking-Site. Wir müssen geduldig sein und warten, bis Google beschließt, dies zu unterstützen.

4
mlemos

Mit der Release-Version von Chrome (ab Chrome 16) ist es jetzt möglich, Java-Skript von einer Erweiterung aus ein- und auszuschalten.

Hier ist eine Erweiterung, die genau das macht:

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

1
Myster

Derzeit können wir mit Ihrer Chrome-Erweiterung NICHT auf chrome: // settings/content data zugreifen

Wenn in meinem Code die Registerkarte "Chrome: // Einstellungen/Inhalt" erstellt wurde, funktioniert die Warnung (0) NICHT. und bekomme immer den folgenden Fehler:

Fehler bei tabs.executeScript: Kann nicht auf Inhalte von URL .__ zugreifen. "Chrome: // Einstellungen/Inhalt". Erweiterung Manifest muss die Erlaubnis an .__ anfordern. auf diesen Host zugreifen.

aber wenn der Tab "http://www.google.com.hk" erstellt wurde, funktioniert die Warnung (0).

Ich denke, wir können NICHT auf Chrome zugreifen: // Einstellungen/* Daten:

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

Nur so konnte ich verhindern, dass die Chrome-Erweiterung Javascript ausführt. Fügen Sie diesen Code ein:

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