In Firefox version 13, bookmarklets (bookmarks with a javascript:
URL, e.g. javascript: alert("it works")
stopped working. Is there any solution to use javascript:
bookmarks in Firefox 13?
问题:
回答1:
This is a consequence of Bug 728313 - Using a bookmark keyword to a bookmarklet fails on new tabs, also Bug 739387 - Aurora 13a New Tab display doesn't allow javascript bookmarks to be selected . This bug affects Firefox 13 onwards.
As a consequence of the fix to bug 723808, javascript:
bookmarks are disabled in a just-created new tab. If you first load almost any URL, including about:blank
, then a Javascript bookmark will work in that tab.
Note that this is about Javascript bookmarks (bookmarklets). You cannot use this workaround to load javascript:
URLs typed directly in the location bar. These have been disabled since Firefox 6, as a consequence of bug 656433 (phishing of javascript:
URLs). Bug 680302 is a feature request to allow turning javascript:
URLs back on through a preference. Valadrem has written the InheritPrincipal extension to remove this restriction (I haven't tested it). You can still type and run Javascript code in the Scratchpad (press Shift+F4, type code, press Ctrl+R).
There are restrictions on the Javascript you can run from the URL bar or from a bookmark. For example, since Firefox 7, you cannot resize the window (consequence of the fix to bug 565541); the services.sync.prefs.sync.dom.disable_window_move_resize
controls this restriction.
回答2:
NOTE: this solution no longer appears to work as of FF41. See JS Bookmarklets stopped working in Firefox 41.
If you first load almost any URL, including about:blank, then a Javascript bookmark will work in that tab.
Since Firefox's default behavior for new tabs is about:newtab
, which is nothing, and bookmarklets only run once something is loaded, you can do the following to set a default page, and then run bookmarklets:
- open
about:config
- find
browser.newtab.url
- double-click and change from
about:newtab
toabout:blank
(or URI of your choice) Ctrl-T
and run bookmarklets in new tabs!
回答3:
I have been able to use bookmarklets in recent versions of firefox (I just tested a few on FF23). Two suggestions:
- Replace spaces with %20. For instance, try your example bookmarklet code with
javascript:alert("it%20works")
instead ofjavascript:alert("it works")
- If this isn't enough, enclose the whole bookmarklet inside an anonymous function, so in your example, you'd write
javascript:((function(){alert("it%20works");})())