Dấu trang của tôi bao gồm lệnh gọi đến tập lệnh 'trình chạy' được chèn vào body
. Khi nó chạy, nó chèn vào một cách tương tự như nhiều kịch bản lệnh (jQuery, ứng dụng thực tế) và một CSS.Làm cách nào để thực thi một bookmarklet chỉ chạy một lần?
Bookmarklet
javascript:(function(){
var l = document.createElement('script');
l.setAttribute('type','text/javascript');
l.setAttribute('src','launcher.js');
document.body.appendChild(l);
})();
Launcher.js
var s = document.createElement('script');
s.setAttribute('type','text/javascript');
s.setAttribute('src','my actual script');
document.body.appendChild(s);
// I repeat a block like this once per script/css.
Vấn đề là nếu bookmarklet được nhấp hai lần, tất cả các kịch bản sẽ được chèn vào một lần nữa. Làm thế nào tôi có thể ngăn chặn hành vi này?
oops - được chỉnh sửa để sửa lỗi cú pháp thắng và đặt khối if từ fon anon thay vì vô nghĩa xung quanh nó. –
Hoàn hảo - những nỗ lực trước đây của tôi chắc chắn nằm dọc theo những dòng này nhưng tôi đã sử dụng các biến thay vì đạo cụ cửa sổ, điều mà tôi hoàn toàn không biết. Cảm ơn! – vemv
@vemv Một biến được khai báo bên trong một hàm là 'yourVar = 1234;' mà không có từ khóa 'var' ở trước nó thực tế trở thành thuộc tính của đối tượng' window' toàn cục, nhưng phương thức này rõ ràng hơn và có chủ ý. –