คุณอาจลองแปลง bookmarklet เป็นGreaseMonkey userscripts พวกเขาทำงานในสภาพแวดล้อมที่มีสิทธิพิเศษและไม่อยู่ภายใต้ CSP
อย่างไรก็ตามแน่นอนว่า intents ของ userscripts และ bookmarklet นั้นแตกต่างกัน - userscripts จะทำงานโดยอัตโนมัติในขณะที่ bookmarklet ตามต้องการ คุณสามารถหลีกเลี่ยงสิ่งนี้เช่นโดยการสร้าง<button>
ใน userscript ต่อท้ายหน้าและตั้งค่าonclick
ฟังเหตุการณ์บนปุ่มนั้นเพื่อเริ่มรหัสของ bookmarklet
รหัสควรเป็นดังนี้:
// ==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 ด้วย คุณสามารถดีบัก userscripts ใน Firebug โดยใช้debugger;
คีย์เวิร์ดในสคริปต์
อย่างไรก็ตามโปรดทราบว่าFirebug นั้นมีไว้สำหรับ CSP แล้วดังนั้นคุณจึงไม่สามารถใช้งานโค้ดในคอนโซลได้ (แต่คุณสามารถตรวจสอบ userscripts ของคุณในโหมด "อ่านอย่างเดียว") สิ่งนี้กำลังได้รับการดูแลในบั๊กนี้