自作のGoogleでJavaScriptをオン/オフにすることは可能ですかChrome extension?
たとえば、Operaブラウザでは、ウィジェット、 ユーザーが作成したボタン などを使用してそれを行う簡単な可能性がありますが、私はしませんでしたChrome(私の最初のソースは 公式Google Chrome拡張機能のドキュメント )でした。 。
奇妙な点は、拡張機能自体を実行するためにJavaScriptが必要なことです...拡張機能でJavaScriptをオフにできる場合、拡張機能でJavaScriptを使用できますか?
編集:
chrome.contentSettings.javascript !を介して実行することはすでに可能です。
この例を参照してください 使用方法を示します(Quick JavaScript Switcherextension、whichmlblink here )。
ContentSettings APIで可能になりました。
そして Quick Javascript Switcher という名前の拡張機能があり、その場でjavascriptをオン/オフにします: quick-javascript-switcher
[〜#〜] qjs [〜#〜] Chromeウェブストア: https://chrome.google.com/webstore/detail/geddoclleiomckbhadiaipdggiiccfje
楽しい !
現在、拡張機能がJavaScriptサポートを無効にすることはできないようです。 Chromium追跡サイトには、そのための 機能要求 もあります。 Googleがそれをサポートすることを決定するまで、我慢して待つ必要があります。
リリースバージョンのchrome(as chrome 16)を使用すると、拡張機能のJavaスクリプトのオンとオフを切り替えることができます。
これを行う拡張機能を次に示します。
https://chrome.google.com/webstore/detail/geddoclleiomckbhadiaipdggiiccfje
現在、 chrome:// settings/content にデータをアクセスすることはできませんChrome拡張機能
私のコードでは、タブ「chrome:// settings/content」が作成されると、alert(0)は[〜#〜] not [〜#〜]動作し、常に次のエラーが発生します:
Tabs.executeScript中のエラー:URL「chrome:// settings/content」のコンテンツにアクセスできません。拡張マニフェストは、このホストにアクセスする許可を要求する必要があります。
ただし、タブ「http://www.google.com.hk」が作成されると、alert(0)が機能します。
だから、chrome:// settings/* dataにアクセスできないと思います:
<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",
"*://*/*"
]
}
それが、JavaScriptの実行からchrome拡張機能を停止するために働いた唯一の方法です。このコードを貼り付けます。
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();