Avatar billede Morten Professor
15. august 2020 - 00:38 Der er 3 kommentarer

Søg efter # og fjern href

Hej

Håber der er en der kan hjælpe mig med at løse denne:
$('a').each(function () {
                  var getURL = $(this).attr("href");
                  var removeUndefined = $(this).attr("href", getURL.replace("undefined#" + Cookies.get('guid'), "#"));

                    removeUndefined

                })

Det jeg prøver på er at når et link har: undefined#
Skal den enden fjerne href, eller gøre så # denne ikke bliver link, så siden ikke refresh.

Det er nødvenligt da det er en dropdown menu

Har kæmpet noget med det til aften, men syntes ikke jeg kan.

Håber du måske kan se hvad jeg gør galt?

Med venlig hilsen
Morten
Avatar billede Slater Ekspert
15. august 2020 - 06:55 #1
Det virker lidt som et XY problem, hvor du tackler en bestemt løsning i stedet for at løse problemet fra grunden. Hvorfor ikke forhindre den i at udskrive de ting til at starte med? Eller det er måske et library du ikke kan styre?

I hvert fald overkomplicerer du det ved at gennemgå alle links. Du kan bare tjekke for href med selectoren. F.eks. sådan:

$('a[href="undefined#"]').each(function() {
    this.href = "java script:;";
});

At sætte href til "java script:;" er den hurtigste måde at forhindre et klik i at gøre noget, men kønt er det ikke. Den mere "korrekte" måde ville muligvis være at sætte en click-handler og preventDefault'e den. Men igen, den rigtig korrekte måde ville være slet ikke at udskrive de links fra starten.
Avatar billede Slater Ekspert
15. august 2020 - 06:56 #2
Hov, jeg kan se Eksperten laver om så der står "java script" i to ord. Nok et underligt forsøg på at forhindre XSS, hvilket godt nok er ringe på en side som denne.
Det skal altså stå i et ord.
Avatar billede Morten Professor
15. august 2020 - 07:33 #3
Hej

Kan godt se det, men er bare nød til at lave de links med dette #..........
Men bare uden undefined
Og har prøve nogle forskellige ting men lad os gå til hovede problemet :)
Her er en kode der laver linksne på siden:

if($('body').hasClass('single') < 1) {
                var param = document.URL.split('#')[1];
                $("a").each(function () {
                    var $this = $(this);
                    var _href = $this.attr("href");

                    if (param == undefined) {
                        $this.attr("href", _href + '#' + Cookies.get('guid'));
                    } else if (!Cookies.get('guid') == param) {
                        $this.attr("href", _href + '#' + Cookies.get('guid'));
                    } else {
                        $this.attr("href", _href + '#' + param);
                    }
                });

                    Cookies.set('guid', param, {expires: 7, path: '/'})
                var getGUID = $('a').attr("href").split('#')[1]

                Cookies.set('guid', getGUID, {expires: 7, path: '/'})
            }


                $('a.cart-customlocation').attr("href", document.URL + '#' + Cookies.get('guid'));

Jeg prøvet at få kontrol ved denne:
if (param == undefined) {
                        $this.attr("href", _href + '#' + Cookies.get('guid'));
                    } else if (!Cookies.get('guid') == param) {
                        $this.attr("href", _href + '#' + Cookies.get('guid'));
                    } else {
                        $this.attr("href", _href + '#' + param);
                    }

Men hjælper ikke.
Ved godt jeg er ret ny i jQuery, og derfor ikke har forstand på biblioteket, endnu.

Jeg er glad for du vil hjælpe med på rette vej.

Med venlig hilsen
Morten
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester