Более надежный способ получить location.href в Javascript Bookmarklet? - PullRequest
4 голосов
/ 27 декабря 2011

Это мой текущий букмарклет:

javascript:(function(){ alert(location.href); })();

, который, кажется, работает нормально, но для меня это не работает на YouTube под Chrome по какой-то причине ... есть ли более надежный способ получитьlocation.href?Спасибо.

1 Ответ

3 голосов
/ 27 декабря 2011

Нет. Вы можете попробовать

(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

...