Nếu bookmarklet có thể nhấp của bạn bị hỏng và bạn muốn nó trở lại, bạn có thể tạo một nút có thể nhấp thay vì sử dụng Custom Buttons tiện ích mở rộng của Firefox.
Những lợi thế nút trên chạy từ Scratchpad:
- bạn có thể thực sự tiết kiệm bookmarklet (nút),
- bạn có thể có một đẹp biểu tượng riêng (tạo ra một số hình ảnh ví dụ như PNG , nhập khẩu nó và base64_encode nó bên trong hộp thoại nút mới).
Phần mở rộng là một chút đặc biệt vì các nút chạy ở Firefox chrome mức, vì vậy họ đang ưu tiên hơn một chút (bạn có thể tương tác với các API của trình duyệt), và không có 1-to-1 tương ứng giữa JS bình thường và mã nút (, cần chỉnh sửa). Chính xác hơn, document
và window
được nhìn thấy từ nút không phải là thứ bạn mong đợi.
Tuy nhiên, bạn có thể gán 'tốt' window
và document
cho các biến của bạn, và sau đó làm việc trên các biến này thay vì (tốt hơn không xác định lại cửa sổ;)
Dưới đây là một số mẫu mã tôi viết mà hoạt động khá tốt trong Fx10 :
// get proper 'window' and 'document' into our private variables
var theWindow = window.top.getBrowser().selectedBrowser.contentWindow;
var theDocument = theWindow.document;
// here we go
var input = theDocument.getElementById("foo");
input.focus(); // just to show you it's working, unnecessary in fact
// simulate keyboard event
var evt = theDocument.createEvent("KeyboardEvent");
evt.initKeyEvent ("keypress", true, true, theWindow ,
0, 0, 0, 0, 0, 65); // 65 == "A"
input.dispatchEvent(evt);
// show alert after 2 sec
theWindow.setTimeout(function(){
input.value += "B";
theWindow.alert(input.value); // alerts "AB"
},2000);
thay vì sử dụng các chức năng toàn cầu trực tiếp (như setTimeout
, hoặc alert
), bạn cần phải đặt theWindow.
trước mặt họ, và thay thế document
/window
với địa phương theDocument
/theWindow
và có vẻ như nó đang hoạt động. Tôi đã không thử nghiệm nó kỹ lưỡng tuy nhiên với trường hợp rất phức tạp.
Để thêm nút, nhấp chuột phải vào bất kỳ nút nào bạn đã có và chọn 'Thêm nút mới ...'.
Tôi làm như thế nào? – Ryan
@ Ryan: Bằng cách thực hiện chính xác những gì bạn đã làm với câu trả lời của tôi: Chấp nhận câu trả lời giúp bạn nhiều nhất. Bạn nên quay lại câu hỏi cũ của bạn và làm như vậy. –