Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Поисковая строка к url с blob: (https://javascript.ru/forum/events/84710-poiskovaya-stroka-k-url-s-blob.html)

voraa 23.11.2022 20:35

Поисковая строка к url с blob:
 
Делаю такую вещь
<!doctype html>
<html>
<head>
</head>
<body>
my page
<script>
let dopp = `<!doctype html>
	<html>
	<head>
	</head>
	<body>
	new page
	</body>
	</html>`;
let blob = new Blob([dopp], {type : 'text/html'});
let url  = URL.createObjectURL(blob);
let ea = document.createElement('a');
ea.target = '_blank_';
ea.href = url;
ea.click();
</script>
</body>
</html>


Теперь хочу в стр 20 ea.href = url + '?search.str';
Не работает

<!doctype html>
<html>
<head>
</head>
<body>
my page
<script>
let dopp = `<!doctype html>
	<html>
	<head>
	</head>
	<body>
	new page
	</body>
	</html>`;
let blob = new Blob([dopp], {type : 'text/html'});
let url  = URL.createObjectURL(blob);
let ea = document.createElement('a');
ea.target = '_blank_';
ea.href = url + '?search.str';
ea.click();
</script>
</body>
</html>


Как ее туда прикрутить?

Alexandroppolus 24.11.2022 02:45

странная хотелка. А для чего там этот '?search.str' ?

URL.createObjectURL добавляет блоб в специальный словарик (Map) где-то внутри браузера, и возвращает строковый ключ этой записи. URL.revokeObjectURL удаляет запись. Ключ с любой строковой добавкой не имеет смысла.

В хроме ключ выглядит вот так (содержит origin+guid):
"blob:https://lookatcode.com/ba0d5456-e9c8-4d2b-bc62-92015f66a5c8"

то есть это не http-адрес, а "черт знает что", и никакого поискового параметра там быть не может.

voraa 24.11.2022 07:35

Цитата:

Сообщение от Alexandroppolus
А для чего там этот '?search.str' ?

Что бы сформированная и открытая страница могла его получить и как то обработать.
Цитата:

Сообщение от Alexandroppolus
В хроме ключ выглядит вот так (содержит origin+guid):

Ну я думал, что эта строка добавится и будет доступна внутри странице через new URL(location).search

Там собственно есть URL(location).protocol = 'blob:'
URL(location).origin = "https://lookatcode.com"
URL(location).path = "https://lookatcode.com/ba0d5456-e9c8-4d2b-bc62-92015f66a5c8"

Почему бы не быть еще и URL(location).search?

Alexandroppolus 24.11.2022 08:38

Видимо, там всё что после орджина, считается гуидом..
Просто добавь скрипт с константой внутри тега head формируемого документа.

voraa 24.11.2022 08:47

Самое интересное, что хеш (якорь) совершенно спокойно работает
ea.href = url + '#a1';
Нормально срабатывает. И даже переходит к элементу с id="a1", если он есть.

voraa 24.11.2022 08:56

Причем
ea.href = url + '#h?search.str';
тоже работает, но
URL(location).hash = "#h?search.str"

Или по правилам URL хеш должен идти после строки запроса?

voraa 24.11.2022 08:58

Цитата:

Сообщение от Белый шум
в других не проверял:

В файрфоксе тоже работает.
Сафари у меня нет.

Alexandroppolus 24.11.2022 09:04

Да, хэш всегда в конце. Браузер сначала отрезает решетку и всё что после неё, а потом уже смотрит что там за урл и как с ним работать.


Часовой пояс GMT +3, время: 14:11.