Você pode tentar converter seus bookmarklets em GreaseMonkey . Eles correm em um ambiente privilegiado e não estão sujeitos ao CSP.
No entanto, é claro que as intenções de userscripts e bookmarklets são diferentes - os scripts de usuários são executados automaticamente enquanto os bookmarklets são solicitados. Você pode contornar isto, por exemplo criando um <button>
no userscript, anexando-o à página e definindo um onclick
event listener 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);
Extraído quase literalmente do meu userscript que também está segmentando o GitHub. Você pode depurar scripts de usuários no Firebug usando debugger;
keyword no script.
No entanto, o próprio Firebug está sujeito a CSP, por isso você não pode, por exemplo, execute código no console (mas você pode inspecionar seus scripts de usuário no modo "somente leitura"). Isso está sendo resolvido em este bug .