Нет. Вы можете попробовать
(function(window){window.alert(window.location.href)})(this);
, который гарантирует, что вы не используете какую-либо пользовательскую функцию alert
из глобального пространства имен. Но нет способа предотвратить перезапись window.alert
, например window.alert = function () { console.log('Haha!'); };
.
Объект location
должен быть защищенным от сбоев, так как внутренний метод установки браузера запрещает любые махинации (это означает, что атрибут window
location
эффективно защищен от записи, как и window.location
's href
атрибут)
Edit:
Похоже, что букмарклеты не работают в Firefox 6+ из-за «атак с использованием социальной инженерии», и с этим ничего не поделаешь.
https://stackoverflow.com/a/6643466/27862
https://bugzilla.mozilla.org/show_bug.cgi?id=527530