Как удалить автопробрасываемые url параметры из ссылок на странице

Published on 13 December, 2023 | Сниппеты с кодом | 2,079 views

Скрипт удаляет все параметры указанные в массиве paramsToRemove.

В примере ниже удаляются ['_ga', '_ym_uid'].

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Function to remove specified query parameters from a URL
    function removeQueryParams(url, paramsToRemove) {
        let urlObj = new URL(url);
        paramsToRemove.forEach(param => urlObj.searchParams.delete(param));
        return urlObj.href;
    }

    // Function to update URLs in the onclick attribute
    function updateOnClickAttribute(element, paramsToRemove) {
        const onClickContent = element.getAttribute('onclick');
        if (!onClickContent) return;

        // Replace URLs in the onclick attribute
        const updatedOnClick = onClickContent.replace(/(https?:\/\/[^\s]+)/g, function(match) {
            return removeQueryParams(match, paramsToRemove);
        });

        element.setAttribute('onclick', updatedOnClick);
    }

    // Array of query parameters to be removed
    const paramsToRemove = ['_ga', '_ym_uid'];

    // Select all div elements with 'data-biolink-block-id' attribute
    const divElements = document.querySelectorAll('div[data-biolink-block-id]');

    // Iterate over the div elements and find nested anchor tags
    divElements.forEach(div => {
        const anchorElements = div.querySelectorAll('a');

        // Update href and onclick attributes for each anchor tag
        anchorElements.forEach(anchor => {
            if (anchor.href && !anchor.href.includes('#carousel_block_')) {
                anchor.href = removeQueryParams(anchor.href, paramsToRemove);
            }
            updateOnClickAttribute(anchor, paramsToRemove);
        });
    });
});
</script>
Last updated on: 15 December, 2023