X
Tippen Sie hierhin, um die Version dieser Website für Mobilgeräte aufzurufen.

Hilfeforum

External Page Jumps does not work properly in Firefox, how to fix this?

Veröffentlicht

I have a site created through wordpress platform. I have used page jump (anchor) to redirect one of my links into a specific section from another page. Works fine with Chrome, IE and Microsoft Edge, except with Firefox. It redirects to the page but gone through the bottom of it rather than the specific section where it's suppose to land.

I have a site created through wordpress platform. I have used page jump (anchor) to redirect one of my links into a specific section from another page. Works fine with Chrome, IE and Microsoft Edge, except with Firefox. It redirects to the page but gone through the bottom of it rather than the specific section where it's suppose to land.

Ausgewählte Lösung

Hmm, Firefox is computing the vertical position of that box before applying the CSS rules that move the box into the sidebar and way up the page. (Example screenshot attached.)

I think this is due to a recent change in Firefox that changed the sequence of certain actions with odd side effects like this. Possibly related issue (the window.print() script command running before styles are applied, starting in Firefox 67): https://support.mozilla.org/questions/1262244

As a workaround, you could re-navigate to the hash using something like this:

/* Scroll to anchor */
function pgshow(e){
    var elId = window.location.hash;
    if (elId.length > 1){
        el = document.getElementById(elId.substr(1));
        if (el) el.scrollIntoView(true);
    }
}
// pageshow fires after load and on Back/Forward
window.addEventListener('pageshow', pgshow);

If you only want to navigate on the initial page load (i.e., not if the user is going Back/Forward to the page in the same tab), it would make more sense to hook into the load event:

Diese Antwort im Kontext lesen 1
Zitieren

Mehr Details zum System

Anwendung

  • User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0

Weitere Informationen

Wesley Branton
  • Top 10 Contributor
577 Lösungen 4931 Antworten
Veröffentlicht

Do you have a link to the website that we can try for ourselves?

Do you have a link to the website that we can try for ourselves?
Hat Ihnen das weitergeholfen?
Zitieren
cor-el
  • Top 10 Contributor
  • Moderator
17407 Lösungen 157253 Antworten
Veröffentlicht

Is this a link (anchor) to a position in an (i)frame or directly on the web page?

Is this a link (anchor) to a position in an (i)frame or directly on the web page?
Hat Ihnen das weitergeholfen?
Zitieren

Fragesteller

Here's the page that you can access: https://wem.technology/dark-web-why-should-business-consider-dark-web-scanning/

On the right sidebar, next to recent posts, there is a CTA. The button that says Free Audit will link to this page: https://wem.technology/it-support-london/#free-network-sec-audit-form. The element's ID where it should point is #free-network-sec-audit-form as shown in the URL. It is situated in the right sidebar, a yellow-like-coupon form that says FREE NETWORK SECURITY AUDIT.

Here's the page that you can access: https://wem.technology/dark-web-why-should-business-consider-dark-web-scanning/ On the right sidebar, next to recent posts, there is a CTA. The button that says '''Free Audit''' will link to this page: ''https://wem.technology/it-support-london/#free-network-sec-audit-form''. The element's ID where it should point is '''#free-network-sec-audit-form''' as shown in the URL. It is situated in the right sidebar, a yellow-like-coupon form that says '''FREE NETWORK SECURITY AUDIT'''.
Hat Ihnen das weitergeholfen?
Zitieren
jscher2000
  • Top 10 Contributor
8632 Lösungen 70597 Antworten
Veröffentlicht

Ausgewählte Lösung

Hmm, Firefox is computing the vertical position of that box before applying the CSS rules that move the box into the sidebar and way up the page. (Example screenshot attached.)

I think this is due to a recent change in Firefox that changed the sequence of certain actions with odd side effects like this. Possibly related issue (the window.print() script command running before styles are applied, starting in Firefox 67): https://support.mozilla.org/questions/1262244

As a workaround, you could re-navigate to the hash using something like this:

/* Scroll to anchor */
function pgshow(e){
    var elId = window.location.hash;
    if (elId.length > 1){
        el = document.getElementById(elId.substr(1));
        if (el) el.scrollIntoView(true);
    }
}
// pageshow fires after load and on Back/Forward
window.addEventListener('pageshow', pgshow);

If you only want to navigate on the initial page load (i.e., not if the user is going Back/Forward to the page in the same tab), it would make more sense to hook into the load event:

Hmm, Firefox is computing the vertical position of that box before applying the CSS rules that move the box into the sidebar and way up the page. (Example screenshot attached.) I think this is due to a recent change in Firefox that changed the sequence of certain actions with odd side effects like this. Possibly related issue (the window.print() script command running before styles are applied, starting in Firefox 67): https://support.mozilla.org/questions/1262244 As a workaround, you could re-navigate to the hash using something like this: <pre>/* Scroll to anchor */ function pgshow(e){ var elId = window.location.hash; if (elId.length > 1){ el = document.getElementById(elId.substr(1)); if (el) el.scrollIntoView(true); } } // pageshow fires after load and on Back/Forward window.addEventListener('pageshow', pgshow); </pre> If you only want to navigate on the initial page load (i.e., not if the user is going Back/Forward to the page in the same tab), it would make more sense to hook into the load event: * https://developer.mozilla.org/docs/Web/API/Window/pageshow_event * https://developer.mozilla.org/docs/Web/API/Window/load_event
Hat Ihnen das weitergeholfen? 1
Zitieren

Fragesteller

The image you have sent points to the wrong coupon that I have meant. You probably have thought the one below the article. What I meant is the one in the right sidebar. Sorry if I didn't make it clear. But anyway, with what you've explained seems that it is, for the meantime, impossible for the step that I did. The code you've posted, will this be inserted in the footer area? And where do I put the element ID/anchor in that part? Sorry, I'm a bit confused.

The image you have sent points to the wrong coupon that I have meant. You probably have thought the one below the article. What I meant is the one in the right sidebar. Sorry if I didn't make it clear. But anyway, with what you've explained seems that it is, for the meantime, impossible for the step that I did. The code you've posted, will this be inserted in the footer area? And where do I put the element ID/anchor in that part? Sorry, I'm a bit confused.
Hat Ihnen das weitergeholfen?
Zitieren
jscher2000
  • Top 10 Contributor
8632 Lösungen 70597 Antworten
Veröffentlicht

Hilfreiche Antwort

jcignoro said

The image you have sent points to the wrong coupon that I have meant. You probably have thought the one below the article. What I meant is the one in the right sidebar.

That is the correct coupon, and that is what it looks like in the split second after Firefox scrolls down to it before it gets moved to the right sidebar. You may need to bypass the cache to see it: Ctrl+Shift+r

But anyway, with what you've explained seems that it is, for the meantime, impossible for the step that I did. The code you've posted, will this be inserted in the footer area? And where do I put the element ID/anchor in that part?

The script would go into WordPress somewhere* so that when the user loads a page with an anchor, the browser scrolls to the anchor if it's not there already. The script just works with whatever hash it finds on the URL, you don't need to change anything else.

* Each WordPress theme is different, so I don't know how you would integrate custom JavaScript into yours.

Maybe I can post it as a WordPress plugin at some point? That would be a new adventure...

''jcignoro [[#answer-1248907|said]]'' <blockquote> The image you have sent points to the wrong coupon that I have meant. You probably have thought the one below the article. What I meant is the one in the right sidebar. </blockquote> That is the correct coupon, and that is what it looks like in the split second after Firefox scrolls down to it before it gets moved to the right sidebar. You may need to bypass the cache to see it: Ctrl+Shift+r <blockquote> But anyway, with what you've explained seems that it is, for the meantime, impossible for the step that I did. The code you've posted, will this be inserted in the footer area? And where do I put the element ID/anchor in that part? </blockquote> The script would go into WordPress somewhere* so that when the user loads a page with an anchor, the browser scrolls to the anchor if it's not there already. The script just works with whatever hash it finds on the URL, you don't need to change anything else. ''* Each WordPress theme is different, so I don't know how you would integrate custom JavaScript into yours.'' Maybe I can post it as a WordPress plugin at some point? That would be a new adventure...
Hat Ihnen das weitergeholfen? 1
Zitieren

Fragesteller

I just inserted it in the footer of the theme that I have used. That just works like magic! A big thank for the help @jscher2000! It answered my question perfectly.

jscher2000 said

As a workaround, you could re-navigate to the hash using something like this:
/* Scroll to anchor */
function pgshow(e){
    var elId = window.location.hash;
    if (elId.length > 1){
        el = document.getElementById(elId.substr(1));
        if (el) el.scrollIntoView(true);
    }
}
// pageshow fires after load and on Back/Forward
window.addEventListener('pageshow', pgshow);
I just inserted it in the footer of the theme that I have used. That just works like magic! A big thank for the help @jscher2000! It answered my question perfectly. ''jscher2000 [[#answer-1248902|said]]'' <blockquote> As a workaround, you could re-navigate to the hash using something like this: <pre>/* Scroll to anchor */ function pgshow(e){ var elId = window.location.hash; if (elId.length > 1){ el = document.getElementById(elId.substr(1)); if (el) el.scrollIntoView(true); } } // pageshow fires after load and on Back/Forward window.addEventListener('pageshow', pgshow); </pre> </blockquote>
Hat Ihnen das weitergeholfen?
Zitieren
Stellen Sie eine Frage

Sie müssen sich mit Ihrem Benutzerkonto anmelden, um auf Beiträge zu antworten. Bitte stellen Sie eine neue Frage, wenn Sie noch kein Benutzerkonto haben.