Você pode tentar converter seus bookmarklets em scripts de usuário do GreaseMonkey . Eles são executados em um ambiente privilegiado e não estão sujeitos ao CSP.
No entanto, é claro que as intenções dos scripts do usuário e bookmarklets são diferentes - os scripts do usuário são executados automaticamente enquanto os bookmarklets sob demanda. Você pode contornar isso, por exemplo, criando um <button>
no script do usuário, anexando-o à página e configurando um onclick
ouvinte de evento nesse botão para disparar o código do bookmarklet.
O código deve ser assim:
// ==UserScript==
// @name Name
// @description Description
// @version 0.1
// @namespace example.Lekensteyn
// @grant none
// @include http*://github.com/*/*/commit/*
// ==/UserScript==
var myBookmarklet = function () {
// here goes the code of the bookmarklet
};
var newButton = document.createElement('button');
newButton.innerHTML = 'Execute my bookmarklet';
newButton.addEventListener('click', function(evt) {
myBookmarklet();
});
document.getElementById('someElement').appendChild(newButton);
Retirado quase literalmente do meu script de usuário, que também está direcionado ao GitHub. Você pode depurar scripts de usuários no Firebug usando a debugger;
palavra-chave no script.
Observe, porém, que o Firebug em si também está sujeito ao CSP, portanto, você não pode, por exemplo, executar código no console (mas pode inspecionar seus scripts de usuário no modo "somente leitura"). Isso está sendo resolvido neste bug .