Я пытаюсь удалить все после "?" в браузере URL на документ готов.
Вот что я пытаюсь:
jQuery(document).ready(function($) {
var url = window.location.href;
url = url.split('?')[0];
});
Я могу сделать это и посмотреть, как работает ниже:
jQuery(document).ready(function($) {
var url = window.location.href;
alert(url.split('?')[0]);
});
javascript
jquery
Дерек
источник
источник
.ready()
? Вам не нужно ждать, чтобы перенаправить на новый URL-адрес или просто использовать.pushState()
в соответствии с рекомендациями Joraid.Ответы:
TL; DR
1- Чтобы изменить текущий URL и добавить / добавить его (новый измененный URL) в качестве новой записи URL в список истории, используйте
pushState
:2- Чтобы заменить текущий URL без добавления его в записи истории, используйте
replaceState
:3- В зависимости от вашей бизнес-логики ,
pushState
будет полезно в таких случаях, как:Вы хотите поддержать кнопку возврата браузера
Вы хотите создать на новый URL, добавить / вставить / нажать новый URL в истории записей, и сделать его текущим URL
позволяя пользователям делать закладки на странице с одинаковыми параметрами (показывать одинаковое содержимое)
для программного доступа к данным через
stateObj
синтаксический анализ с якоряКак я понял из вашего комментария, вы хотите очистить свой URL без повторного перенаправления.
Обратите внимание, что вы не можете изменить весь URL. Вы можете просто изменить то, что идет после имени домена. Это означает, что вы не можете изменить,
www.example.com/
но вы можете изменить то, что приходит после.com/
Задний план
Мы можем использовать:
1 - метод pushState (), если вы хотите добавить новый измененный URL-адрес в записи истории.
2 - метод replaceState (), если вы хотите обновить / заменить текущую запись истории.
Код
Для этого я буду использовать метод pushState () для этого примера, который работает аналогично следующему формату:
Вы можете заменить
pushState
сreplaceState
учетом Ваших пожеланий.Вы можете заменить параметр Я
"object or string"
с{}
и"Title"
сdocument.title
таким окончательными Постулатами будут:Полученные результаты
Предыдущие две строки кода создадут URL-адрес, такой как:
Стать:
действие
Теперь давайте попробуем другой подход. Скажем, вам нужно сохранить имя файла. Имя файла указывается после последней
/
и перед строкой запроса?
.Будет:
Что-то вроде этого заставит это работать:
ОБНОВИТЬ:
Для фанатов одного лайнера, попробуйте это в вашей консоли / firebug, и URL этой страницы изменится:
URL этой страницы изменится с:
к
Примечание: как отметил Сэмюэл Лью в комментариях ниже, эта функция была введена только для
HTML5
.Альтернативный подход заключается в том, чтобы фактически перенаправить вашу страницу (но вы потеряете строку запроса `? ', Она все еще необходима или данные были обработаны?).
источник
replaceState
выглядит лучше, ноpushState
будет работать, пока вы не начнете нажимать кнопки «назад» и «вперед» в браузере и не поймете, что есть причина, по которой существуют целые библиотеки для работы с History API.url.substring(url.lastIndexOf('/') + 1);
.url.split("?")[0]
получит роль до первого вопросительного знака, и это все, что, я думаю, попросил ОП. Вопрос ОП спрашивает: «Я пытаюсь удалить все после«? »В URL браузера».Все это вводит в заблуждение, вы никогда не захотите добавлять в историю браузера, если вы не хотите перейти на другую страницу в одностраничном приложении. Если вы хотите удалить параметры без изменения на странице, вы должны использовать:
источник
простой способ сделать это, работает на любой странице, требует HTML 5
источник
Я считаю, что лучший и самый простой метод для этого:
источник
если в конце моего URL-адреса есть специальный тег, например: http://domain.com/?tag=12345 Ниже приведен код для удаления этого тега, когда он присутствует в URL-адресе:
Это дает идею удалить один или несколько (или все) параметры из URL
С window.location.pathname вы в основном получаете все до '?' в URL.
источник
Я хотел удалить только один параметр
success
. Вот как вы можете сделать это:Это также сохраняет
#hash
.URLSearchParams
не будет работать на IE, но работает над Edge . Вы можете использовать polyfill или можете использовать наивную вспомогательную функцию для поддержки IE:Это может быть использовано как:
источник
take_param
уже делает это, но вы можете сделатьURLSearchParams
то же самое, выполнив:history.replaceState(null, '', (params ? '?' + params : '') + location.hash)
. Или как вам нравится.Лучшее решение:
источник
Ни одно из этих решений не помогло мне, вот функция, совместимая с IE11, которая также может удалять несколько параметров:
источник
источник
Чтобы очистить все параметры, не обновляя страницу, И если вы используете HTML5, то вы можете сделать это:
history.pushState({}, '', 'index.html' ); //replace 'index.html' with whatever your page name is
Это добавит запись в историю браузера. Вы также можете подумать,
replaceState
не хотите ли вы добавить новую запись и просто хотите заменить старую.источник
В jquery использовать <
источник
Вот один вкладыш ES6, который сохраняет хэш местоположения и не загрязняет историю браузера, используя
replaceState
:источник
location
akawindow.location
, так что функция имеет доступ к глобальным переменным,location
посколькуl
остальное является базовым replaceState, как и во всех других ответах, он объединяет путь и хэш (example.com/#hash) в качестве нового URL. Надеюсь, что это усваивается, если нет, дайте мне знать 😉window.history.replaceState({}, '', location.pathname + location.hash)
? ;)location
2 раза 😁, но не нужно присваивать его переменной 😉 или есть что-то еще, Джои?