Этот очень простой пользовательский скрипт получает лучшее от меня:
// ==UserScript==
// @name TEMP
// @match https://*.facebook.com/
// @match https://*.facebook.com/?*
// @grant none
// @run-at document-start
// ==/UserScript==
alert(window.location.href);
При загрузке новой вкладки с домашней страницы Facebook она правильно печатает текущий URL.Однако, если я уже на существующей странице Facebook и нажимаю на верхний левый логотип Facebook, чтобы перейти на домашнюю страницу, он ненадолго распечатает псевдо-URL about:blank
.
* 1006.*
Почему это происходит, и, что более важно, как это исправить? Это на Firefox 67 и GreaseMonkey 4.9.
(подробнее см. Историю измененийдемо.)
Обновления:
alert(document.URL)
также печатает «about: blank».
document.addEventListener("DOMContentLoaded", function(){alert(window.location.href)})
ничего не печатает.
window.addEventListener("load", function(){alert(window.location.href)})
печатает очень длинный URL, который не совпадает с URL-адресом в адресной строке;это на форме:
https://www.facebook.com/?ref=logo&fb_dtsg_ag=AAAAAAAAAAAAAAAAAAAAAAAAAAAA__BBBBBBBBBBBBBB_CC%3DDDDDDDDDDDDDD--MeetvEEEEEEEEEEEEE_FFFFFFFFFFHw&ajaxpipe=1&ajaxpipe_token=GGGGGGGGGGGGGGGG&no_script_path=1&quickling[version]=<very long string indeed...>&__spin_t=9999999999&__adt=2
document.baseURI
работает! (почему?) - , но это не идеальное решение, потому что в общей схеме я действительно хочу получить доступ к другим свойствам объекта window.location
(точнее, path
и search
).Я мог бы построить new URL()
с этим, но, если честно, я бы предпочел избегать этого, если это вообще возможно (также хотел бы быть последовательным во всем сценарии). Обновление: Также работает только в течение доли секунды.