Вы можете попытаться преобразовать букмарклеты в Greasemonkey userscripts. Они работают в привилегированной среде и не подлежат CSP.
Однако, конечно, намерения пользовательских скриптов и букмарклетов различны - пользовательские скрипты запускаются автоматически, а букмарклеты по запросу. Вы можете обойти это, например, создав <button>
в пользовательском сценарии, добавив его на страницу и установив прослушиватель события onclick
для этой кнопки, чтобы запустить код букмарклета.
Код должен идти так:
// ==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);
Взято почти буквально из моего пользовательского скрипта, который также нацелен на GitHub. Вы можете отлаживать пользовательские скрипты в Firebug, используя debugger;
Ключевое слово в сценарии.
Однако обратите внимание, что сам Firebug на данный момент также подчиняется CSP, поэтому вы не можете, например, выполнить код в консоли (но вы можете проверять свои пользовательские скрипты в режиме «только для чтения»). Об этом позаботятся в этой ошибке.