Почему «window.location.href» возвращает «about: blank» в этом пользовательском сценарии? - PullRequest
1 голос
/ 24 июня 2019

Этот очень простой пользовательский скрипт получает лучшее от меня:

// ==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.
(подробнее см. Историю измененийдемо.)

Обновления:

  1. alert(document.URL) также печатает «about: blank».

  2. document.addEventListener("DOMContentLoaded", function(){alert(window.location.href)}) ничего не печатает.

  3. 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
    
  4. document.baseURI работает! (почему?) - , но это не идеальное решение, потому что в общей схеме я действительно хочу получить доступ к другим свойствам объекта window.location (точнее, path и search).Я мог бы построить new URL() с этим, но, если честно, я бы предпочел избегать этого, если это вообще возможно (также хотел бы быть последовательным во всем сценарии). Обновление: Также работает только в течение доли секунды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...